Java中的抽象类

抽象类在Java中与接口类似,但它可以包含默认方法实现。抽象类可以拥有没有主体的抽象方法,也可以拥有带有实现的方法。abstract关键字用于创建抽象类和方法。Java中的抽象类不能被实例化。抽象类主要用于为子类提供扩展和实现抽象方法的基础,并重写或使用抽象类中实现的方法。

Java中的抽象类

下面是Java中抽象类的一个简单示例。

package com.journaldev.design;

//抽象类
public abstract class Person {
	
	private String name;
	private String gender;
	
	public Person(String nm, String gen){
		this.name=nm;
		this.gender=gen;
	}
	
	//抽象方法
	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[]){
		//使用抽象类进行编码
		Person student = new Employee("Dove","Female",0);
		Person employee = new Employee("Pankaj","Male",123);
		student.work();
		employee.work();
		//使用在抽象类中实现的方法 - 继承
		employee.changeName("Pankaj Kumar");
		System.out.println(employee.toString());
	}

}

请注意,子类 Employee 使用 Java 中的继承 继承 来继承超类 Person 的属性和方法。还要注意在 Employee 类中使用了 Override 注解。阅读更多了解为什么我们在覆盖方法时应始终使用 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 抽象类用于为所有子类提供通用的方法实现,或提供默认实现。
  11. 如果抽象类有main()方法,我们可以像运行其他类一样在 Java 中运行它。

这就是 Java 中抽象类的全部内容。如果我漏掉了任何重要内容,请通过评论告诉我们。

Source:
https://www.digitalocean.com/community/tutorials/abstract-class-in-java