Абстрактный класс в Java
Абстрактный класс в Java похож на интерфейс, за исключением того, что он может содержать реализацию метода по умолчанию. Абстрактный класс может иметь абстрактный метод без тела, а также методы с реализацией. Ключевое слово abstract
используется для создания абстрактного класса и метода. Абстрактный класс в java не может быть создан. Абстрактный класс в основном используется для обеспечения базы для подклассов для расширения и реализации абстрактных методов и переопределения или использования реализованных методов в абстрактном классе.
Абстрактный класс в Java
package com.journaldev.design;
//abstract class
public abstract class Person {
private String name;
private String gender;
public Person(String nm, String gen){
this.name=nm;
this.gender=gen;
}
//abstract method
public abstract void work();
@Override
public String toString(){
return "Name="+this.name+"::Gender="+this.gender;
}
public void changeName(String newName) {
this.name = newName;
}
}
Обратите внимание, что work()
является абстрактным методом и не имеет тела. Вот пример конкретного класса, расширяющего абстрактный класс в java.
package com.journaldev.design;
public class Employee extends Person {
private int empId;
public Employee(String nm, String gen, int id) {
super(nm, gen);
this.empId=id;
}
@Override
public void work() {
if(empId == 0){
System.out.println("Not working");
}else{
System.out.println("Working as employee!!");
}
}
public static void main(String args[]){
//coding in terms of abstract classes
Person student = new Employee("Dove","Female",0);
Person employee = new Employee("Pankaj","Male",123);
student.work();
employee.work();
//using method implemented in abstract class - inheritance
employee.changeName("Pankaj Kumar");
System.out.println(employee.toString());
}
}
Обратите внимание, что подкласс Employee наследует свойства и методы суперкласса Person, поэтому мы всегда должны использовать аннотацию Override при переопределении метода.
Абстрактный класс в Java Важные моменты
- Ключевое слово
abstract
используется для создания абстрактного класса в Java.- Невозможно создать экземпляр абстрактного класса в Java.
- Мы можем использовать ключевое слово
abstract
для создания абстрактного метода, у абстрактного метода нет тела. - Если у класса есть абстрактные методы, то класс также должен быть абстрактным с помощью ключевого слова abstract, иначе он не будет компилироваться.
- У абстрактного класса нет необходимости иметь абстрактный метод. Мы можем пометить класс как абстрактный, даже если он не объявляет никаких абстрактных методов.
- Если в абстрактном классе нет реализации метода, лучше использовать интерфейс, потому что Java не поддерживает множественное наследование классов.
- Подкласс абстрактного класса в java должен реализовывать все абстрактные методы, если подкласс также не является абстрактным классом.
- Все методы в интерфейсе неявно абстрактны, если только методы интерфейса не являются статическими или используются по умолчанию. Статические методы и методы по умолчанию в интерфейсах добавлены в Java 8, для получения более подробной информации прочитайте об изменениях интерфейса Java 8.
- Абстрактный класс Java может реализовывать интерфейсы, даже не предоставляя реализацию интерфейсных методов.
- Класс Java Abstract используется для реализации общего метода для всех подклассов или для реализации по умолчанию.
- Мы можем запустить абстрактный класс в Java, как и любой другой класс, если он имеет метод
main()
.
Это все, что касается абстрактного класса в Java. Если я пропустил что-то важное, сообщите нам об этом в комментариях.