Поиск по сайту:

Абстрактный класс в 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 Важные моменты

    Ключевое слово
  1. abstract используется для создания абстрактного класса в Java.
  2. Невозможно создать экземпляр абстрактного класса в Java.
  3. Мы можем использовать ключевое слово abstract для создания абстрактного метода, у абстрактного метода нет тела.
  4. Если у класса есть абстрактные методы, то класс также должен быть абстрактным с помощью ключевого слова abstract, иначе он не будет компилироваться.
  5. У абстрактного класса нет необходимости иметь абстрактный метод. Мы можем пометить класс как абстрактный, даже если он не объявляет никаких абстрактных методов.
  6. Если в абстрактном классе нет реализации метода, лучше использовать интерфейс, потому что Java не поддерживает множественное наследование классов.
  7. Подкласс абстрактного класса в java должен реализовывать все абстрактные методы, если подкласс также не является абстрактным классом.
  8. Все методы в интерфейсе неявно абстрактны, если только методы интерфейса не являются статическими или используются по умолчанию. Статические методы и методы по умолчанию в интерфейсах добавлены в Java 8, для получения более подробной информации прочитайте об изменениях интерфейса Java 8.
  9. Абстрактный класс Java может реализовывать интерфейсы, даже не предоставляя реализацию интерфейсных методов.
  10. Класс Java Abstract используется для реализации общего метода для всех подклассов или для реализации по умолчанию.
  11. Мы можем запустить абстрактный класс в Java, как и любой другой класс, если он имеет метод main().

Это все, что касается абстрактного класса в Java. Если я пропустил что-то важное, сообщите нам об этом в комментариях.