Clasa și metoda abstractului Java (cu exemplu)

În acest tutorial, vom învăța despre clasele și metodele abstracte Java cu ajutorul exemplelor. De asemenea, vom învăța despre abstractizare în Java.

Clasa abstractă Java

Clasa abstractă din Java nu poate fi instanțiată (nu putem crea obiecte din clase abstracte). Folosim abstractcuvântul cheie pentru a declara o clasă abstractă. De exemplu,

 // create an abstract class abstract class Language ( // fields and methods )… // try to create an object Language // throws an error Language obj = new Language(); 

O clasă abstractă poate avea atât metode regulate, cât și metode abstracte. De exemplu,

 abstract class Language ( // abstract method abstract void method1(); // regular method void method2() ( System.out.println("This is regular method"); ) )

Pentru a afla despre metodele non-abstracte, vizitați metodele Java. Aici, vom învăța despre metodele abstracte.

Metoda abstractă Java

O metodă care nu are corpul său este cunoscută ca o metodă abstractă. Folosim același abstractcuvânt cheie pentru a crea metode abstracte. De exemplu,

 abstract void display();

Iată display()o metodă abstractă. Corpul lui display()este înlocuit cu ;.

Dacă o clasă conține o metodă abstractă, atunci clasa trebuie declarată abstractă. În caz contrar, va genera o eroare. De exemplu,

 // error // class should be abstract class Language ( // abstract method abstract void method1(); )

Exemplu: Clasa și metodă Java Abstract

Deși clasele abstracte nu pot fi instanțiate, putem crea subclase din aceasta. Putem apoi accesa membrii clasei abstracte folosind obiectul subclasei. De exemplu,

 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(); ) )

Ieșire

 Aceasta este programarea Java

În exemplul de mai sus, am creat o clasă abstractă numită Limbă. Clasa conține o metodă obișnuită display().

Am creat clasa Main care moștenește clasa abstractă. Observați declarația,

 obj.display();

Aici, obj este obiectul clasei de copii Main. Numim metoda clasei abstracte folosind obiectul obiect.

Implementarea metodelor abstracte

Dacă clasa abstractă include orice metodă abstractă, atunci toate clasele copil moștenite din superclasa abstractă trebuie să asigure implementarea metodei abstracte. De exemplu,

 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(); ) )

Ieșire

 Coaja scoarță pot mânca.

În exemplul de mai sus, am creat o clasă abstractă Animal. Clasa conține o metodă abstractă makeSound()și o metodă non-abstractă eat().

Am moștenit un câine de subclasă de la superclasa Animal. Aici, subclasa Dog oferă implementarea metodei abstracte makeSound().

Am folosit apoi obiectul d1 al clasei Dog pentru a apela metode makeSound()și eat().

Notă : Dacă clasa Dog nu oferă implementarea metodei abstracte makeSound(), Dog ar trebui, de asemenea, să fie declarat ca abstract. Acest lucru se datorează faptului că subclasa câine moștenește de makeSound()la Animal.

Accesează constructorul claselor abstracte

O clasă abstractă poate avea constructori precum clasa obișnuită. Și putem accesa constructorul unei clase abstracte din subclasă folosind supercuvântul cheie. De exemplu,

 abstract class Animal ( Animal() (… . ) ) class Dog extends Animal ( Dog() ( super();… ) )

Aici, am folosit super()interiorul constructorului Dog pentru a accesa constructorul Animalului.

Rețineți că superar trebui să fie întotdeauna prima afirmație a constructorului de subclasă. Accesați super cuvântul cheie Java pentru a afla mai multe.

Java Abstraction

Utilizarea majoră a claselor și metodelor abstracte este de a realiza abstractizarea în Java.

Abstracția este un concept important de programare orientată pe obiecte, care ne permite să ascundem detalii inutile și să arătăm doar informațiile necesare.

Acest lucru ne permite să gestionăm complexitatea prin omiterea sau ascunderea detaliilor cu o idee mai simplă, la nivel superior.

Un exemplu practic de abstractizare pot fi frânele motocicletei. Știm ce face frâna. Când acționăm frâna, motocicleta se va opri. Cu toate acestea, funcționarea frânei ne este ascunsă.

Avantajul major al ascunderii funcționării frânei este că acum producătorul poate implementa frâna diferit pentru diferite motociclete, totuși, ceea ce face frâna va fi același.

Să luăm un exemplu care ne ajută să înțelegem mai bine abstractizarea Java.

Exemplul 3: Abstracție Java

 abstract class Animal ( abstract void makeSound(); ) class Dog extends Animal ( // implementation of abstract method public void makeSound() ( System.out.println("Bark bark."); ) ) class Cat extends Animal ( // implementation of abstract method public void makeSound() ( System.out.println("Meows "); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.makeSound(); Cat c1 = new Cat(); c1.makeSound(); ) )

Ieșire :

 Coaja scoarță Miau

In the above example, we have created a superclass Animal. The superclass Animal has an abstract method makeSound().

The makeSound() method cannot be implemented inside Animal. It is because every animal makes different sounds. So, all the subclasses of Animal would have different implementation of makeSound().

So, the implementation of makeSound() in Animal is kept hidden.

Here, Dog makes its own implementation of makeSound() and Cat makes its own implementation of makeSound().

Note: We can also use interfaces to achieve abstraction in Java. To learn more, visit Java Interface.

Key Points to Remember

  • We use the abstract keyword to create abstract classes and methods.
  • An abstract method doesn't have any implementation (method body).
  • O clasă care conține metode abstracte ar trebui, de asemenea, să fie abstractă.
  • Nu putem crea obiecte dintr-o clasă abstractă.
  • Pentru a implementa caracteristicile unei clase abstracte, moștenim subclasele din aceasta și creăm obiecte din subclasă.
  • O subclasă trebuie să suprascrie toate metodele abstracte ale unei clase abstracte. Cu toate acestea, dacă subclasa este declarată abstractă, nu este obligatoriu să înlocuiți metodele abstracte.
  • Putem accesa atributele statice și metodele unei clase abstracte utilizând referința clasei abstracte. De exemplu,
     Animal.staticMethod();

Articole interesante...