Java抽象类完全指南:从基础概念到实际应用
在Java中,抽象类类似于接口,但它可以包含默认方法的实现。抽象类可以拥有没有具体实现的抽象方法,也可以拥有有具体实现的方法。使用关键字abstract可以创建抽象类和抽象方法。在Java中,无法实例化抽象类。抽象类主要用于为子类提供扩展的基础,实现抽象方法并重写或使用抽象类中已实现的方法。
在Java中的抽象类
下面是一个在Java中的抽象类的简单示例。
package com.Olivia.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.Olivia.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中使用继承,子类Employee继承了父类Person的属性和方法。还要注意Employee类中使用了Override注解。阅读更多关于为什么我们在重写一个方法时应该始终使用Override注解的原因。
Java中的抽象类重要要点
- 抽象关键字用于在Java中创建抽象类。
Java中的抽象类不能被实例化。
我们可以使用抽象关键字来创建抽象方法,抽象方法没有具体实现。
如果一个类有抽象方法,则该类应该使用抽象关键字进行声明,否则将无法编译通过。
即使抽象类没有声明任何抽象方法,也可以将其标记为抽象类。
如果抽象类没有任何方法实现,最好使用接口,因为Java不支持多继承。
Java中的抽象类的子类必须实现所有抽象方法,除非子类也是抽象类。
接口中的所有方法隐式地是抽象的,除非接口方法是静态或默认方法。静态方法和默认方法是在Java 8中添加的,详细信息请阅读Java 8接口更改。
Java抽象类可以实现接口,而不需要提供接口方法的实现。
Java抽象类用于为所有子类提供公共方法实现或默认实现。
如果抽象类有main()方法,我们可以像运行其他类一样运行它。
这就是关于Java中抽象类的全部内容。如果我遗漏了任何重要信息,请通过评论让我们知道。