Автор оригинала: 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. Если я пропустил что-то важное, пожалуйста, сообщите нам об этом в комментариях.