Автор оригинала: Pankaj Kumar.
Абстрактный класс в Java похож на интерфейс, за исключением того, что он может содержать реализацию метода по умолчанию. Абстрактный класс может иметь абстрактный метод без тела, а также методы с реализацией.
ключевое слово abstract используется для создания абстрактного класса и метода. Абстрактный класс в java не может быть создан. Абстрактный класс в основном используется для обеспечения базы подклассов для расширения и реализации абстрактных методов и переопределения или использования реализованных методов в абстрактном классе.
Абстрактный класс в 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());
}
}
Обратите внимание, что сотрудник подкласса наследует свойства и методы Человека суперкласса, используя наследование в java .
Также обратите внимание на использование аннотации переопределения в классе сотрудников. Подробнее о том, почему мы всегда должны использовать аннотацию переопределения при переопределении метода, читайте здесь .
Абстрактный класс в Java Важные моменты
ключевое слово abstractиспользуется для создания абстрактного класса в java.- Абстрактный класс в java не может быть создан.
- Мы можем использовать ключевое слово
abstractдля создания абстрактного метода, абстрактный метод не имеет тела. - Если класс имеет абстрактные методы, то класс также должен быть абстрактным с использованием ключевого слова abstract, иначе он не будет компилироваться.
- Абстрактному классу необязательно иметь абстрактный метод. Мы можем пометить класс как абстрактный, даже если он не объявляет никаких абстрактных методов.
- Если абстрактный класс не имеет никакой реализации метода, лучше использовать интерфейс, потому что java не поддерживает наследование нескольких классов.
- Подкласс абстрактного класса в java должен реализовывать все абстрактные методы, если только подкласс не является также абстрактным классом.
- Все методы в интерфейсе неявно абстрактны, если только методы интерфейса не являются статическими или по умолчанию. Статические методы и методы по умолчанию в интерфейсах добавлены в Java 8, для получения более подробной информации читайте Изменения интерфейса Java 8 .
- Абстрактный класс Java может реализовывать интерфейсы, даже не предоставляя реализацию методов интерфейса.
- Абстрактный класс Java используется для обеспечения общей реализации метода для всех подклассов или для обеспечения реализации по умолчанию.
- Мы можем запускать абстрактный класс в java, как и любой другой класс, если у него есть метод
main ().
Это все для абстрактного класса в Java. Если я пропустил что-то важное, пожалуйста, сообщите нам об этом в комментариях.