如图可以知道,如果父类当中的方法不知道如何进行{}方法体实现,那么这就应该是一个抽象方法
抽象方法定义:
public abstract class Animal{
public abstract void eat();
}
如何使用抽象方法? 1.不能直接new抽象类对象
public abstract class Animal{
public abstract void eat();
}
public class test {
public static void main(String[] args) {
var animal = new Animal(); //错误写法
}
2.必须用一个子类来继承抽象父类
3.子类必须覆盖重写抽象父类中所有的抽象方法
覆盖重写(实现):子类去掉父类抽象方法中的abstract关键字,然后补上方法体大括号
4.创建子类对象进行使用
public abstract class Animal{
public abstract void eat();
}
public class Cat extends Animal{
@Override
public abstract void eat(){
System.out.println("猫吃鱼");
}
}
public class test {
public static void main(String[] args) {
var cat = new Cat();
cat.eat(); //输出猫吃鱼
}
抽象类的注意事项:
-
抽象类不能直接new对象,上文已经涉及
-
抽象类中,可以有构造方法。若想访问父类的构造方法,要在子类的构造方法中,用默认的super()来访问
-
抽象类中不一定包含抽象方法,但抽象方法的类必须是抽象类
-
抽象类的子类必须重写抽象父类中所有的抽象方法。除非该子类也是抽象类