定义
抽象方法:就是加上abstract
关键字,然后去掉大括号,直接分号结束;
抽象类:抽象方法所在的类,必须是抽象类才可以。在class
之前写上abstract
才可以。
如何使用抽象类和抽象方法:
【1】不能直接创建new
抽象类对象。
【2】必须用一个子类来继承抽象父类。
【3】子类必须覆盖重写抽象父类当中的所有的抽象方法。
覆盖重写(实现):子类去掉抽象方法的abstract
关键字,然后补上方法体大括号。
【4】创建子类对象进行使用
代码举例
public abstract class Animal {
//这是一个抽象方法,代表吃东西,但是具体吃什么(大括号中的内容)不确定
public abstract void eat();
//这是普通的成员方法
public void normalMethod(){
}
}
public class Cat extends Animal{
@Override
public void eat(){
System.out.println("猫吃鱼");
}
}
public class Demo01Animal {
public static void main(String[] args) {
//抽象类不能直接new创建
// Animal animal=new Animal();
//创建子类对象使用
Cat cat=new Cat();
cat.eat();
}
}
关于抽象类的使用的注意事项:
- 抽象类不能创建对象,如果创建,会因为编译无法通过而报错。只能创建其非抽象子类的对象。
2.抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。也就是说,子类的构造方法中,有默认的super()
,需要访问父类构造方法。 - 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
- 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类。
理解:假设不重写所有抽象方法,则类中可能包含抽象方法。那么创建对象后,调用抽象的方法,没有意义。