logo

Abstrakcyjne słowo kluczowe w Javie

Słowo kluczowe streszczenie służy do osiągnięcia abstrakcji w Javie. Jest to modyfikator bez dostępu, który służy do tworzenia abstrakcyjnej klasy i metody.

Rolą klasy abstrakcyjnej jest przechowywanie metod abstrakcyjnych. Może jednak zawierać również metody nieabstrakcyjne. Metoda zadeklarowana za pomocą słowa kluczowego abstrakcyjnego i nie posiadająca żadnej implementacji nazywana jest metodą abstrakcyjną.

Składnia:-

 abstract class Employee { abstract void work(); } 

Uwaga - Nie możemy deklarować metod abstrakcyjnych w klasie nieabstrakcyjnej.

Reguły abstrakcyjnego słowa kluczowego

czego nie wolno

  • Abstrakcyjnego słowa kluczowego nie można używać ze zmiennymi i konstruktorami.
  • Jeśli klasa jest abstrakcyjna, nie można jej utworzyć.
  • Jeśli metoda jest abstrakcyjna, nie zawiera treści.
  • Nie możemy używać słowa kluczowegoabstrakt z finał .
  • Nie możemy deklarować metod abstrakcyjnych jako prywatny .
  • Nie możemy deklarować metod abstrakcyjnych jako statyczny .
  • Nie można zsynchronizować metody abstrakcyjnej.

Zrób

  • Abstrakcyjnego słowa kluczowego można używać tylko z klasą i metodą.
  • Klasa abstrakcyjna może zawierać konstruktory i metody statyczne.
  • Jeśli klasa rozszerza klasę abstrakcyjną, musi także implementować co najmniej jedną z metod abstrakcyjnych.
  • Klasa abstrakcyjna może zawierać metodę główną i metodę końcową.
  • Klasa abstrakcyjna może zawierać przeciążone metody abstrakcyjne.
  • Możemy zadeklarować lokalną klasę wewnętrzną jako abstrakcyjną.
  • Metodę abstrakcyjną możemy zadeklarować za pomocą klauzuli rzutowej.

Przykłady abstrakcyjnego słowa kluczowego

Przykład 1: Klasa abstrakcyjna zawierająca metodę abstrakcyjną

 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(); } } 
Przetestuj teraz

Wyjście:

 Bike is running 

Przykład 2: Klasa abstrakcyjna zawierająca metodę abstrakcyjną i nieabstrakcyjną

 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(); } } 
Przetestuj teraz

Wyjście:

aes vs des
 Bike is running Car is running 

Przykład 3: Klasa abstrakcyjna zawierająca konstruktor

 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(); } } 
Przetestuj teraz

Wyjście:

 Constructor is invoked 

Przykład 4: Klasa abstrakcyjna zawierająca przeciążone metody abstrakcyjne

 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'); } } 
Przetestuj teraz

Wyjście:

 abstract method is invoked overloaded abstract method is invoked 

Przykład 5: Wewnętrzna klasa abstrakcyjna

 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(); } } 
Przetestuj teraz

Wyjście:

 inner abstract class is invoked 

Przykład 6: Zagnieżdżona klasa abstrakcyjna

 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(); } } 
Przetestuj teraz

Wyjście:

 nested abstract class is invoked