Ключовата дума abstract се използва за постигане на абстракция в Java. Това е модификатор без достъп, който се използва за създаване на абстрактен клас и метод.
Ролята на абстрактния клас е да съдържа абстрактни методи. Въпреки това, той може да съдържа и неабстрактни методи. Методът, който е деклариран с абстрактна ключова дума и няма реализация, е известен като абстрактен метод.
какво е азбучен номер
Синтаксис:-
abstract class Employee { abstract void work(); }
Забележка - Не можем да декларираме абстрактни методи в неабстрактен клас.
Правила за абстрактна ключова дума
Не трябва
- Абстрактна ключова дума не може да се използва с променливи и конструктори.
- Ако даден клас е абстрактен, той не може да бъде създаден.
- Ако даден метод е абстрактен, той не съдържа тялото.
- Не можем да използваме абстрактната ключова дума с финал .
- Не можем да декларираме абстрактни методи като частен .
- Не можем да декларираме абстрактни методи като статичен .
- Абстрактен метод не може да бъде синхронизиран.
Направи
- Абстрактна ключова дума може да се използва само с клас и метод.
- Абстрактният клас може да съдържа конструктори и статични методи.
- Ако даден клас разширява абстрактния клас, той трябва също да имплементира поне един от абстрактните методи.
- Абстрактен клас може да съдържа основния метод и последния метод.
- Абстрактен клас може да съдържа претоварени абстрактни методи.
- Можем да декларираме локалния вътрешен клас като абстрактен.
- Можем да декларираме абстрактния метод с клауза за хвърляне.
Примери за абстрактни ключови думи
Пример 1: Абстрактен клас, съдържащ абстрактния метод
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(); } }Тествайте сега
Изход:
Bike is running
Пример 2: Абстрактен клас, съдържащ абстрактния и неабстрактния метод
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(); } }Тествайте сега
Изход:
Bike is running Car is running
Пример 3: Абстрактен клас, съдържащ конструктора
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(); } }Тествайте сега
Изход:
Constructor is invoked
Пример 4: Абстрактен клас, съдържащ претоварени абстрактни методи
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'); } }Тествайте сега
Изход:
abstract method is invoked overloaded abstract method is invoked
Пример 5: Вътрешен абстрактен клас
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(); } }Тествайте сега
Изход:
заключване на приложение за Android
inner abstract class is invoked
Пример 6: Вложен абстрактен клас
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(); } }Тествайте сега
Изход:
nested abstract class is invoked