Explorando el código, creando soluciones, y compartiendo conocimientos en el fascinante mundo del desarrollo de software.

sábado, 10 de febrero de 2024

Orientación a Objetos en Java: Clases, Herencia, Polimorfismo y más

Orientación a Objetos en Java: Clases, Herencia, Polimorfismo y más

Orientación a Objetos en Java

Clases y Objetos

La orientación a objetos es un paradigma de programación que utiliza clases y objetos. Una clase es una plantilla para crear objetos, y un objeto es una instancia de una clase. Veamos un ejemplo simple:

// Definición de una clase public class Persona { // Atributos String nombre; int edad; // Método constructor public Persona(String nombre, int edad) { this.nombre = nombre; this.edad = edad; } // Método public void saludar() { System.out.println("Hola, soy " + nombre + " y tengo " + edad + " años."); } } // Creación de un objeto Persona persona1 = new Persona("Juan", 30); persona1.saludar();

Herencia, Polimorfismo, Encapsulamiento

Herencia

La herencia permite que una clase herede atributos y métodos de otra clase. Esto promueve la reutilización del código. Ejemplo:

// Clase base public class Animal { String nombre; public Animal(String nombre) { this.nombre = nombre; } public void comer() { System.out.println(nombre + " está comiendo."); } } // Clase derivada public class Perro extends Animal { public Perro(String nombre) { super(nombre); } public void ladrar() { System.out.println(nombre + " está ladrando."); } } // Creación de un objeto derivado Perro miPerro = new Perro("Buddy"); miPerro.comer(); miPerro.ladrar();

Polimorfismo

El polimorfismo permite que una clase se comporte de varias formas. Esto se logra mediante el uso de interfaces y clases abstractas. Ejemplo:

// Interfaz public interface Sonido { void hacerSonido(); } // Clase que implementa la interfaz public class Gato implements Sonido { public void hacerSonido() { System.out.println("El gato maulla."); } } // Clase que también implementa la interfaz public class Pajaro implements Sonido { public void hacerSonido() { System.out.println("El pájaro canta."); } } // Uso del polimorfismo Sonido miAnimal = new Gato(); miAnimal.hacerSonido(); miAnimal = new Pajaro(); miAnimal.hacerSonido();

Encapsulamiento

El encapsulamiento protege los detalles internos de una clase y permite acceder a ellos solo a través de métodos. Ejemplo:

public class CuentaBancaria { private double saldo; public CuentaBancaria(double saldoInicial) { this.saldo = saldoInicial; } public void depositar(double cantidad) { saldo += cantidad; } public void retirar(double cantidad) { if (cantidad <= saldo) { saldo -= cantidad; } else { System.out.println("Saldo insuficiente."); } } public double obtenerSaldo() { return saldo; } } // Uso del encapsulamiento CuentaBancaria cuenta = new CuentaBancaria(1000); cuenta.depositar(500); cuenta.retirar(200); double saldoActual = cuenta.obtenerSaldo(); System.out.println("Saldo actual: " + saldoActual);

Interfaces y Clases Abstractas

Interfaces

Una interfaz define un conjunto de métodos que una clase debe implementar. Ejemplo:

// Interfaz public interface Volador { void despegar(); void volar(); void aterrizar(); } // Clase que implementa la interfaz public class Avion implements Volador { public void despegar() { System.out.println("El avión despega."); } public void volar() { System.out.println("El avión vuela."); } public void aterrizar() { System.out.println("El avión aterriza."); } } // Uso de la interfaz Volador miAvion = new Avion(); miAvion.despegar(); miAvion.volar(); miAvion.aterrizar();

Clases Abstractas

Una clase abstracta es similar a una interfaz, pero puede contener implementaciones de métodos. Ejemplo:

// Clase abstracta public abstract class Figura { abstract double calcularArea(); void mostrar() { System.out.println("Esta es una figura."); } } // Clase que extiende la clase abstracta public class Cuadrado extends Figura { double lado; public Cuadrado(double lado) { this.lado = lado; } public double calcularArea() { return lado * lado; } } // Uso de la clase abstracta Figura miFigura = new Cuadrado(5); double areaCuadrado = miFigura.calcularArea(); miFigura.mostrar(); System.out.println("Área del cuadrado: " + areaCuadrado);

Modificadores de Acceso

Los modificadores de acceso controlan el nivel de visibilidad de clases, variables y métodos. Los principales son public, private y protected.

// Ejemplo de uso de modificadores de acceso public class EjemploAcceso { public String mensajePublico = "Este mensaje es público"; private String mensajePrivado = "Este mensaje es privado"; protected String mensajeProtegido = "Este mensaje es protegido"; // Métodos con distintos modificadores de acceso public void mostrarMensajePublico() { System.out.println(mensajePublico); } private void mostrarMensajePrivado() { System.out.println(mensajePrivado); } protected void mostrarMensajeProtegido() { System.out.println(mensajeProtegido); } } // Uso de la clase con modificadores de acceso EjemploAcceso ejemplo = new EjemploAcceso(); ejemplo.mostrarMensajePublico(); // ejemplo.mostrarMensajePrivado(); // Esto dará un error, ya que el método es privado. ejemplo.mostrarMensajeProtegido();
Navegación entre lecciones



© 2024 Programar desde Cero


No hay comentarios:

Publicar un comentario

Java Iniciación en Java Hola mundo en Java Sintaxis básica de Java Orientación a objetos en Java Manejo de excepciones en Java Java desde Cero Colecciones en Java Manejo de Archivos en Java Entrada/Salida en Java Hilos y concurrencia en Java Programación Funcional en Java Programación Orientada a Objetos (OOP) en Java Manejo de fechas y tiempos Persistencia de datos en Java Desarrollo Web en Java Manejo de dependencias Gradle Maven JUnit Git Java Desarrollo de servicios web en Java Patrones de Diseño en Java Principios Básicos de Seguridad en Java Principios SOLID en Java Frameworks populares en Java Ciclo de vida de una aplicación Java Desarrollo Ágil Base de Datos en Java Hola mundo en COBOL Estructura básica de COBOL Sintaxis Básica de COBOL Manipulación de archivos en COBOL Búsqueda en Archivos Secuenciales COBOL Ordenación y Combinación de Archivos COBOL Manejo de Errores en COBOL Subprogramas y Modularidad en COBOL Archivos Indexados en COBOL Clasificación y Fusión de Archivos en COBOL Lectura y Escritura de Archivos Secuenciales COBOL IDE Desarrollo de Software Programación Java Plugin Eclipse Desarrollo Integrado Eclipse IDE Java Development Desarrollo de Aplicaciones Programación en Eclipse Desarrollo Ágil Java EE Desarrollo Web Desarrollo Móvil Eclipse Marketplace Eclipse Plugins JavaFX Desarrollo GUI Git Control de Versiones GitHub Git Bash Git Commands Git Workflow Branching Merging Repositorios Commit Git Branch Git Pull Git Push Git Clone Git Merge Conflictos en Git Git Log Git Tag Git Remote Visual Studio Code IDE Desarrollo de Software Extensiones Editor de Código Programación Configuración VSC Snippets Depuración Control de Versiones Integración Git Atajos de Teclado Temas Productividad Extensiones VSC Lenguajes de Programación