Java abstrakt klass och metod (med exempel)

I denna handledning lär vi oss om Java-abstraktklasser och metoder med hjälp av exempel. Vi lär oss också om abstraktion i Java.

Java abstrakt klass

Abstraktklassen i Java kan inte instantieras (vi kan inte skapa objekt med abstrakta klasser). Vi använder abstractnyckelordet för att förklara en abstrakt klass. Till exempel,

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

En abstrakt klass kan ha både vanliga metoder och abstrakta metoder. Till exempel,

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

För att veta om de icke-abstrakta metoderna, besök Java-metoder. Här lär vi oss om abstrakta metoder.

Java abstrakt metod

En metod som inte har sin kropp kallas en abstrakt metod. Vi använder samma abstractnyckelord för att skapa abstrakta metoder. Till exempel,

 abstract void display();

Här display()är en abstrakt metod. Kroppen av display()ersätts av ;.

Om en klass innehåller en abstrakt metod, ska klassen förklaras abstrakt. Annars genererar det ett fel. Till exempel,

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

Exempel: Java abstrakt klass och metod

Även om abstrakta klasser inte kan instansieras kan vi skapa underklasser från den. Vi kan sedan komma åt medlemmar i den abstrakta klassen med hjälp av objektet i underklassen. Till exempel,

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

Produktion

 Detta är Java-programmering

I exemplet ovan har vi skapat en abstrakt klass med namnet Språk. Klassen innehåller en vanlig metod display().

Vi har skapat huvudklassen som ärver den abstrakta klassen. Lägg märke till uttalandet,

 obj.display();

Här är obj objektet för barnklassen Main. Vi kallar metoden för den abstrakta klassen med hjälp av objektet obj.

Implementering av abstrakta metoder

Om abstraktklassen innehåller någon abstrakt metod, måste alla barnklasser som ärvs från den abstrakta superklassen tillhandahålla implementeringen av den abstrakta metoden. Till exempel,

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

Produktion

 Barkbark kan jag äta.

I exemplet ovan har vi skapat en abstrakt klass Animal. Klassen innehåller en abstrakt metod makeSound()och en icke-abstrakt metod eat().

Vi har ärvt en underklass Hund från superklassen Animal. Här ger underklassen Hund implementeringen av den abstrakta metoden makeSound().

Vi använde sedan objektet d1 i hundklassen för att anropa metoder makeSound()och eat().

Obs! Om hundklassen inte tillhandahåller implementeringen av abstraktmetoden makeSound(), bör hund också förklaras som abstrakt. Detta beror på att underklassen Hund ärver makeSound()från Animal.

Åtkomst till konstruktörer av abstrakta klasser

En abstrakt klass kan ha konstruktörer som den vanliga klassen. Och vi kan komma åt konstruktören för en abstrakt klass från underklassen med hjälp av supernyckelordet. Till exempel,

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

Här har vi använt super()hundens konstruktör för att komma åt djurets konstruktör.

Observera att det superalltid ska vara det första uttalandet från underklasskonstruktören. Besök Java super nyckelord för att lära dig mer.

Java-abstraktion

Den huvudsakliga användningen av abstrakta klasser och metoder är att uppnå abstraktion i Java.

Abstraktion är ett viktigt begrepp för objektorienterad programmering som gör att vi kan dölja onödiga detaljer och bara visa den information som behövs.

Detta gör att vi kan hantera komplexitet genom att utelämna eller dölja detaljer med en enklare idé på högre nivå.

Ett praktiskt exempel på abstraktion kan vara motorbromsar. Vi vet vad bromsar gör. När vi sätter i bromsen stannar motorcykeln. Men bromsens funktion hålls gömd för oss.

Den största fördelen med att dölja bromsens arbete är att tillverkaren nu kan implementera bromsen på olika sätt för olika motorcyklar, men vad bromsen gör kommer att vara densamma.

Låt oss ta ett exempel som hjälper oss att bättre förstå Java-abstraktion.

Exempel 3: Java-abstraktion

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

Utgång :

 Barkbark Meows

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).
  • En klass som innehåller abstrakta metoder bör också vara abstrakt.
  • Vi kan inte skapa objekt i en abstrakt klass.
  • För att implementera funktioner i en abstrakt klass ärver vi underklasser från den och skapar objekt av underklassen.
  • En underklass måste åsidosätta alla abstrakta metoder i en abstrakt klass. Men om underklassen förklaras abstrakt är det inte obligatoriskt att åsidosätta abstrakta metoder.
  • Vi kan få tillgång till de statiska attributen och metoderna för en abstrakt klass med hjälp av abstraktklassens referens. Till exempel,
     Animal.staticMethod();

Intressanta artiklar...