📌 Programación Orientada a Objetos (POO) Avanzada.

🔹 Encapsulación

Proteger datos usando private y métodos get y set.

class Persona {
     private String nombre;

     public String getNombre() {
          return nombre;
   }

     public void setNombre(String nombre) {
          this.nombre = nombre;
     }
}

👉 Evita que otros modifiquen datos directamente.


🔹 Herencia

Una clase hereda de otra.


class Animal {
     void hacerSonido() {
          System.out.println("Sonido");
     }
}

class Perro extends Animal {
     void ladrar() {
          System.out.println("Guau");
     }
}

🔹 Polimorfismo

Un mismo método, distintos comportamientos.


class Animal {
     void sonido() {
          System.out.println("Sonido genérico");
     }
}

class Gato extends Animal {
     @Override
     void sonido() {
          System.out.println("Miau");
     }
}

🔹 Abstracción

Clase abstracta


abstract class Figura {
     abstract double calcularArea();
}

Interface


interface Volador {
     void volar();
}

📌 Colecciones (Collections Framework).

En vez de arrays, se usan estructuras dinámicas.


🔹 ArrayList

import java.util.ArrayList;

ArrayList<String> nombres = new ArrayList<>();
nombres.add("Ana");
nombres.add("Luis");

🔹 HashMap

import java.util.HashMap;

HashMap<String, Integer> edades = new HashMap<>();
edades.put("Ana", 25);


👉 Muy usado en backend y sistemas grandes.

📌 Manejo de Excepciones.

Control de errores con try-catch.



try {
     int x = 10 / 0;
} catch (ArithmeticException e) {
     System.out.println("Error matemático");
} finally {
     System.out.println("Fin del proceso");
}


También puedes crear tus propias excepciones.

📌 Archivos (File I/O).

Leer y escribir archivos.


import java.io.FileWriter;

FileWriter writer = new FileWriter("archivo.txt");
writer.write("Hola mundo");
writer.close();

📌 Programación Genérica (Generics).

Permite usar tipos dinámicos seguros.


ArrayList<Integer> numeros = new ArrayList<>();

Evita errores de tipo en tiempo de ejecución.

📌 Programación Funcional (Java 8+).

🔹 Lambda

nombres.forEach(nombre -> System.out.println(nombre));

🔹 Streams

nombres.stream()
       .filter(n -> n.startsWith("A"))
       .forEach(System.out::println);

Muy importante en desarrollo moderno.

📌 Paquetes (Packages).

Organizan el código.


package com.miempresa.proyecto;

📌 Modificadores de Acceso.

Modificador     Acceso
public     Todos
private     Solo clase
protected     Paquete + herencia
default     Solo paquete

📌 Enumeraciones (enum).

enum Dia {
LUNES, MARTES, MIERCOLES
}

📌 Hilos (Multithreading básico).

class MiHilo extends Thread {
     public void run() {
          System.out.println("Hilo ejecutándose");
     }
}

O usando Runnable:


Runnable r = () -> System.out.println("Hola");
new Thread(r).start();

📌 En resumen.

Un programador intermedio en Java domina:


✔ POO avanzada
✔ Interfaces y clases abstractas
✔ Collections
✔ Excepciones
✔ Archivos
✔ Generics
✔ Lambda y Streams
✔ Multithreading básico
← REGRESAR