logo

Java absztrakt kulcsszó

Az absztrakt kulcsszó az absztrakció elérésére szolgál Java nyelven. Ez egy nem hozzáférési módosító, amely absztrakt osztály és metódus létrehozására szolgál.

Az absztrakt osztály szerepe az, hogy elvont metódusokat tartalmazzon. Azonban nem absztrakt módszereket is tartalmazhat. Az absztrakt kulcsszóval deklarált metódust, amelynek nincs implementációja, absztrakt metódusnak nevezzük.

Szintaxis:-

 abstract class Employee { abstract void work(); } 

Megjegyzés - Nem deklarálhatunk absztrakt metódusokat nem absztrakt osztályban.

Az absztrakt kulcsszó szabályai

Ne tedd

  • Egy absztrakt kulcsszó nem használható változókkal és konstruktorokkal.
  • Ha egy osztály absztrakt, akkor nem példányosítható.
  • Ha egy módszer elvont, akkor nem tartalmazza a testet.
  • Nem használhatjuk az absztrakt kulcsszót a végső .
  • Az absztrakt módszereket nem deklarálhatjuk mint magán .
  • Az absztrakt módszereket nem deklarálhatjuk mint statikus .
  • Egy absztrakt metódust nem lehet szinkronizálni.

Teendők

  • Egy absztrakt kulcsszó csak osztály és metódus esetén használható.
  • Egy absztrakt osztály tartalmazhat konstruktorokat és statikus metódusokat.
  • Ha egy osztály kiterjeszti az absztrakt osztályt, akkor az absztrakt metódusok közül legalább egyet meg kell valósítania.
  • Egy absztrakt osztály tartalmazhatja a fő metódust és a végső metódust.
  • Egy absztrakt osztály túlterhelt absztrakt metódusokat tartalmazhat.
  • A helyi belső osztályt absztraktnak nyilváníthatjuk.
  • Az absztrakt metódust dobási záradékkal deklarálhatjuk.

Példák absztrakt kulcsszóra

1. példa: Absztrakt osztály, amely tartalmazza az absztrakt metódust

 abstract class Vehicle { abstract void bike(); } class Honda extends Vehicle { @Override void bike() { System.out.println('Bike is running'); } } public class AbstractExample1 { public static void main(String[] args) { Honda obj=new Honda(); obj.bike(); } } 
Tesztelje most

Kimenet:

 Bike is running 

2. példa: Absztrakt osztály, amely tartalmazza az absztrakt és a nem absztrakt metódust

 abstract class Vehicle { abstract void bike(); void car() { System.out.println('Car is running'); } } class Honda extends Vehicle { @Override void bike() { System.out.println('Bike is running'); } } public class AbstractExample2 { public static void main(String[] args) { Honda obj=new Honda(); obj.bike(); obj.car(); } } 
Tesztelje most

Kimenet:

 Bike is running Car is running 

3. példa: A konstruktort tartalmazó absztrakt osztály

 abstract class Vehicle { String msg; Vehicle(String msg) { this.msg=msg; } void display() { System.out.println(msg); } } class Honda extends Vehicle { Honda(String msg) { super(msg); } } public class AbstractExample3 { public static void main(String[] args) { Honda obj=new Honda('Constructor is invoked'); obj.display(); } } 
Tesztelje most

Kimenet:

 Constructor is invoked 

4. példa: Túlterhelt absztrakt metódusokat tartalmazó absztrakt osztály

 abstract class Vehicle { abstract void display(); abstract void display(String msg); } class Honda extends Vehicle { @Override void display() { System.out.println('abstract method is invoked'); } @Override void display(String msg) { System.out.println(msg); } } public class AbstractExample4 { public static void main(String[] args) { Honda obj=new Honda(); obj.display(); obj.display('overloaded abstract method is invoked'); } } 
Tesztelje most

Kimenet:

 abstract method is invoked overloaded abstract method is invoked 

5. példa: Belső absztrakt osztály

 class Vehicle { abstract class Car { abstract void display(); } class Honda extends Car { @Override void display() { System.out.println('inner abstract class is invoked'); } } } public class AbstractExample5 { public static void main(String[] args) { Vehicle obj=new Vehicle(); Vehicle.Car c=obj.new Honda(); c.display(); } } 
Tesztelje most

Kimenet:

 inner abstract class is invoked 

6. példa: Beágyazott absztrakt osztály

 abstract class Vehicle { abstract class Car { abstract void display(); } } class Honda extends Vehicle { class FourWheller extends Car { @Override void display() { System.out.println('nested abstract class is invoked'); } } } public class AbstractExample6 { public static void main(String[] args) { Vehicle obj=new Honda(); Honda h=(Honda)obj; Honda.FourWheller fw=h.new FourWheller(); fw.display(); } } 
Tesztelje most

Kimenet:

 nested abstract class is invoked