Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Clase abstracta de Java y métodos abstractos

Clase abstracta de Java y métodos abstractos

En este tutorial, aprenderemos sobre clases y métodos abstractos de Java con la ayuda de ejemplos. También aprenderemos sobre abstracción en Java.

Clase abstracta de Java

La clase abstracta en Java no se puede instanciar (no podemos crear objetos de clases abstractas). Usamos el abstract palabra clave para declarar una clase abstracta. Por ejemplo,

// create an abstract class
abstract class Language {
  // fields and methods
}
...

// try to create an object Language
// throws an error
Language obj = new Language(); 

Una clase abstracta puede tener tanto métodos regulares como métodos abstractos. Por ejemplo,

abstract class Language {

  // abstract method
  abstract void method1();

  // regular method
  void method2() {
    System.out.println("This is regular method");
  }
}

Para conocer los métodos no abstractos, visite Métodos de Java. Aquí, aprenderemos sobre métodos abstractos.


Método abstracto de Java

Un método que no tiene su cuerpo se conoce como método abstracto. Usamos el mismo abstract palabra clave para crear métodos abstractos. Por ejemplo,

abstract void display();

Aquí, display() es un método abstracto. El cuerpo de display() se reemplaza por ; .

Si una clase contiene un método abstracto, entonces la clase debe declararse abstracta. De lo contrario, generará un error. Por ejemplo,

// error
// class should be abstract
class Language {

  // abstract method
  abstract void method1();
}

Ejemplo:Clase y método abstractos de Java

Aunque no se pueden instanciar clases abstractas, podemos crear subclases a partir de ellas. Entonces podemos acceder a los miembros de la clase abstracta usando el objeto de la subclase. Por ejemplo,

abstract class Language {

  // method of abstract class
  public void display() {
    System.out.println("This is Java Programming");
  }
}

class Main extends Language {

  public static void main(String[] args) {
    
    // create an object of Main
    Main obj = new Main();

    // access method of abstract class
    // using object of Main class
    obj.display();
  }
}

Salida

This is Java programming

En el ejemplo anterior, hemos creado una clase abstracta llamada Idioma . La clase contiene un método regular display() .

Hemos creado la clase Main que hereda la clase abstracta. Note la declaración,

obj.display();

Aquí, obj es el objeto de la clase secundaria Main . Estamos llamando al método de la clase abstracta usando el objeto obj .


Implementación de métodos abstractos

Si la clase abstracta incluye algún método abstracto, todas las clases secundarias heredadas de la superclase abstracta deben proporcionar la implementación del método abstracto. Por ejemplo,

abstract class Animal {
  abstract void makeSound();

  public void eat() {
    System.out.println("I can eat.");
  }
}

class Dog extends Animal {

  // provide implementation of abstract method
  public void makeSound() {
    System.out.println("Bark bark");
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of Dog class
    Dog d1 = new Dog();

    d1.makeSound();
    d1.eat();
  }
}

Salida

Bark bark
I can eat.

En el ejemplo anterior, hemos creado una clase abstracta Animal . La clase contiene un método abstracto makeSound() y un método no abstracto eat() .

Hemos heredado una subclase Perro de la superclase Animal . Aquí, la subclase Perro proporciona la implementación para el método abstracto makeSound() .

Luego usamos el objeto d1 del Perro clase para llamar a métodos makeSound() y eat() .

Nota :Si el Perro la clase no proporciona la implementación del método abstracto makeSound() , Perro también debe declararse como abstracto. Esto se debe a que la subclase Perro hereda makeSound() de Animal .


Accede al Constructor de Clases Abstractas

Una clase abstracta puede tener constructores como la clase regular. Y podemos acceder al constructor de una clase abstracta desde la subclase usando el super palabra clave. Por ejemplo,

abstract class Animal {
   Animal() {
      ….
   }
}

class Dog extends Animal {
   Dog() {
      super();
      ...
   }
}

Aquí, hemos usado el super() dentro del constructor de Dog para acceder al constructor del Animal .

Tenga en cuenta que el super siempre debe ser la primera declaración del constructor de la subclase. Visite la palabra clave super de Java para obtener más información.


Abstracción Java

El principal uso de las clases y métodos abstractos es lograr la abstracción en Java.

La abstracción es un concepto importante de la programación orientada a objetos que nos permite ocultar detalles innecesarios y mostrar solo la información necesaria.

Esto nos permite gestionar la complejidad omitiendo u ocultando detalles con una idea más simple y de mayor nivel.

Un ejemplo práctico de abstracción pueden ser los frenos de las motos. Sabemos lo que hace el freno. Cuando aplicamos el freno, la moto se detendrá. Sin embargo, el funcionamiento del freno se mantiene oculto para nosotros.

La principal ventaja de ocultar el funcionamiento del freno es que ahora el fabricante puede implementar el freno de manera diferente para diferentes motos, sin embargo, lo que hace el freno será el mismo.

Tomemos un ejemplo que nos ayude a comprender mejor la abstracción de Java.

Ejemplo 3:Abstracción de Java

abstract class MotorBike {
  abstract void brake();
}

class SportsBike extends MotorBike {
    
  // implementation of abstract method
  public void brake() {
    System.out.println("SportsBike Brake");
  }
}

class MountainBike extends MotorBike {
    
  // implementation of abstract method
  public void brake() {
    System.out.println("MountainBike Brake");
  }
}

class Main {
  public static void main(String[] args) {
    MountainBike m1 = new MountainBike();
    m1.brake();
    SportsBike s1 = new SportsBike();
    s1.brake();
  }
}

Salida :

MountainBike Brake
SportsBike Brake

En el ejemplo anterior, hemos creado una superclase abstracta MotorBike . La superclase MotorBike tiene un método abstracto brake() .

El brake() el método no se puede implementar dentro de MotorBike . Es porque cada bicicleta tiene una implementación diferente de los frenos. Entonces, todas las subclases de MotorBike tendría una implementación diferente de brake() .

Entonces, la implementación de brake() en Moto se mantiene oculto.

Aquí, MountainBike hace su propia implementación de brake() y Bicicleta Deportiva hace su propia implementación de brake() .

Nota :También podemos usar interfaces para lograr la abstracción en Java. Para obtener más información, visite la interfaz de Java.


Puntos clave para recordar


Java

  1. Clase y método abstractos de C#
  2. Variables y literales de Java
  3. Objetos y clases de Java
  4. Palabra clave final de Java
  5. Operador de instancia de Java
  6. Clase interna y anidada de Java
  7. Clase estática anidada de Java
  8. Clase anónima de Java
  9. Clase única de Java
  10. Clase Java ObjectOutputStream
  11. Genéricos de Java