Det abstrakte søgeord bruges til at opnå abstraktion i Java. Det er en ikke-adgangsmodifikator, som bruges til at skabe abstrakt klasse og metode.
En abstrakt klasses rolle er at indeholde abstrakte metoder. Det kan dog også indeholde ikke-abstrakte metoder. Metoden, der er erklæret med abstrakt nøgleord og ikke har nogen implementering, er kendt som en abstrakt metode.
Syntaks:-
abstract class Employee { abstract void work(); }
Bemærk - Vi kan ikke erklære abstrakte metoder i ikke-abstrakt klasse.
Regler for abstrakt søgeord
Lad være
- Et abstrakt nøgleord kan ikke bruges sammen med variabler og konstruktører.
- Hvis en klasse er abstrakt, kan den ikke instansieres.
- Hvis en metode er abstrakt, indeholder den ikke kroppen.
- Vi kan ikke bruge det abstrakte søgeord med endelig .
- Vi kan ikke erklære abstrakte metoder som privat .
- Vi kan ikke erklære abstrakte metoder som statisk .
- En abstrakt metode kan ikke synkroniseres.
Gøre
- Et abstrakt nøgleord kan kun bruges med klasse og metode.
- En abstrakt klasse kan indeholde konstruktører og statiske metoder.
- Hvis en klasse udvider den abstrakte klasse, skal den også implementere mindst én af de abstrakte metoder.
- En abstrakt klasse kan indeholde hovedmetoden og den endelige metode.
- En abstrakt klasse kan indeholde overbelastede abstrakte metoder.
- Vi kan erklære den lokale indre klasse som abstrakt.
- Vi kan erklære den abstrakte metode med en throw-klausul.
Eksempler på abstrakt søgeord
Eksempel 1: Abstrakt klasse indeholdende den abstrakte metode
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(); } }Test det nu
Produktion:
Bike is running
Eksempel 2: Abstrakt klasse, der indeholder den abstrakte og ikke-abstrakte metode
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(); } }Test det nu
Produktion:
kylie jenner søskende
Bike is running Car is running
Eksempel 3: Abstrakt klasse indeholdende konstruktøren
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(); } }Test det nu
Produktion:
konverter streng til dato
Constructor is invoked
Eksempel 4: Abstrakt klasse indeholdende overbelastede abstrakte metoder
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'); } }Test det nu
Produktion:
abstract method is invoked overloaded abstract method is invoked
Eksempel 5: Indre abstrakt klasse
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(); } }Test det nu
Produktion:
inner abstract class is invoked
Eksempel 6: Indlejret abstrakt klasse
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(); } }Test det nu
Produktion:
nested abstract class is invoked