Рубрики
Без рубрики

Абстрактный класс в Java

Абстрактный класс на Java. Пример Абстрактного класса Java. Что такое абстрактный класс в java? ключевое слово abstract, абстрактный метод в java, пример абстракции в java.

Автор оригинала: 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 Важные моменты

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

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