Java abstraktne klass ja meetod (koos näitega)

Selles õpetuses õpime näidete abil Java abstraktsete klasside ja meetodite kohta. Õpime ka abstraktsiooni Java-s.

Java abstraktne klass

Java abstraktset klassi ei saa instantsida (me ei saa luua abstraktsete klasside objekte). Me kasutame abstractmärksõna abstraktse klassi kuulutamiseks. Näiteks,

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

Abstraktsel klassil võivad olla nii tavalised kui ka abstraktsed meetodid. Näiteks,

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

Mitte-abstraktsete meetodite kohta leiate teavet Java-meetodite kohta. Siit saame teada abstraktsetest meetoditest.

Java abstraktne meetod

Meetodit, millel pole oma keha, nimetatakse abstraktseks meetodiks. abstractAbstraktsete meetodite loomiseks kasutame sama märksõna. Näiteks,

 abstract void display();

Siin display()on abstraktne meetod. Keha display()asendatakse ;.

Kui klass sisaldab abstraktset meetodit, tuleks klass kuulutada abstraktseks. Vastasel juhul tekitab see vea. Näiteks,

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

Näide: Java abstraktne klass ja meetod

Ehkki abstraktseid klasse ei saa kohe luua, saame sellest luua alamklassid. Seejärel pääseme alamklassi objekti abil abstraktse klassi liikmetele juurde. Näiteks,

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

Väljund

 See on Java programmeerimine

Ülaltoodud näites oleme loonud abstraktse klassi nimega Keel. Klass sisaldab tavalist meetodit display().

Oleme loonud põhiklassi, mis pärib abstraktse klassi. Pange tähele avaldust,

 obj.display();

Siin on obj lasteklassi Main objekt. Kutsume objekti objekti abil abstraktse klassi meetodit.

Abstraktsete meetodite rakendamine

Kui abstraktne klass sisaldab mõnda abstraktset meetodit, peavad abstraktse meetodi rakendamise tagama kõik abstraktsest superklassist päritud lapseklassid. Näiteks,

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

Väljund

 Koorekoor, mida saan süüa.

Ülaltoodud näites oleme loonud abstraktse klassi Animal. Klass sisaldab abstraktset meetodit makeSound()ja mitte-abstraktset meetodit eat().

Oleme superklassist Loomalt pärinud alamklassi Koera. Siin pakub alaklass Koer abstraktse meetodi rakendamist makeSound().

Siis kasutatakse objekti D1 Koer klassi helistada meetodid makeSound()ja eat().

Märkus . Kui koerte klass ei paku abstraktse meetodi rakendamist makeSound(), tuleks koer ka abstraktseks kuulutada. Seda seetõttu, et alaklass Koer pärib makeSound()loomalt.

Juurdepääs abstraktsete klasside konstruktorile

Abstraktsel klassil võivad olla sellised konstruktorid nagu tavaklass. Ja abstraktse klassi konstruktorile pääseme juurde alamklassist supermärksõna abil. Näiteks,

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

Siin oleme super()looma konstruktori juurde pääsemiseks kasutanud koera sisemisi konstruktoreid.

Pange tähele, et see superpeaks alati olema alaklassi konstruktori esimene lause. Lisateabe saamiseks külastage Java super-märksõna.

Java abstraktsioon

Abstraktsete klasside ja meetodite peamine kasutamine on Java-s abstraktsiooni saavutamine.

Abstraction is an important concept of object-oriented programming that allows us to hide unnecessary details and only show the needed information.

This allows us to manage complexity by omitting or hiding details with a simpler, higher-level idea.

A practical example of abstraction can be motorbike brakes. We know what brake does. When we apply the brake, the motorbike will stop. However, the working of the brake is kept hidden from us.

The major advantage of hiding the working of the brake is that now the manufacturer can implement brake differently for different motorbikes, however, what brake does will be the same.

Let's take an example that helps us to better understand Java abstraction.

Example 3: Java Abstraction

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

Output:

 Bark bark 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).
  • Abstraktseid meetodeid sisaldav klass peaks olema ka abstraktne.
  • Me ei saa luua abstraktse klassi objekte.
  • Abstraktse klassi tunnuste rakendamiseks pärime sellest alamklassid ja loome alamklassi objektid.
  • Alamklass peab tühistama kõik abstraktse klassi abstraktsed meetodid. Kui aga alaklass tunnistatakse abstraktseks, pole abstraktsete meetodite alistamine kohustuslik.
  • Saame abstraktse klassi staatiliste atribuutide ja meetodite juurde, kasutades abstraktse klassi viidet. Näiteks,
     Animal.staticMethod();

Huvitavad Artiklid...