抽象类
当父类的某些方法,需要声明,但是又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类。可以用 abstract 关键字来修饰该方法,这个方法就是抽象方法,用 abstract 来修饰该类就是抽象类。
//这就是抽象类
abstract class Animal{
private String name;
public Animal(String name) {
this.name = name;
}
//eat() 实现了没有意义
//即:父类不确定性问题
//可以考虑将该方法设计为抽象(abstract)方法
//所谓抽象方法就是没有实现的方法。所谓没有实现是指,没有方法体
//当一个类中有抽象方法时,需要将类声明为 abstract 类
// public void eat(){
// System.out.println("这是一个动物,但是不知道吃什么");
// }
public abstract void eat();//这就是抽象方法
}
抽象方法格式:
抽象方法没有方法体
访问修饰符 abstract 返回类型 方法名(参数列表);
抽象类注意事项和细节:
1)抽象类不能实例化
2)抽象类不一定有抽象方法(abstract 方法)
3)抽象类一旦拥有抽象方法(abstract 方法),则这个类必需是抽象类(abstract 类)
4)abstract 关键字只能修饰类和方法,不能修饰属性和其他
5)抽象类(abstract 类)可以有任何成员,比如:实现了的方法、非抽象方法、构造器、静态属性等等
6)如果一个类继承了抽象类,则它必须实现抽象类的所有的抽象方法(abstract 方法),除非它自己也声明为抽象类(abstract 类)
abstract class A{
public abstract void hi();
}
abstract class B extends A{ }
class C extends B{
//重写并实现了 A类 的抽象方法 hi()
@Override
public void hi() {
}
}
7)抽象方法不能使用 private、final 和 static 来修饰,因为这些关键字与重写相违背。(子类无法访问直接 父类的private方法)(被 final 修饰的方法不能重写或覆盖)(static 修饰的方法不能被子类重写,参考链接:
原文链接:https://blog.csdn.net/weixin_43727229/article/details/104909922
)