概述: 父类知道子类一定要完成某个功能,但是每个子类完成的功能是不一样的,子类也只会用自己重写的功能,那么父类的这个方法就可以定义为抽象方法。
作用: 为了被子类继承,约束子类要重写父类的所有抽象方法。
特征: 抽象类 得到了拥有抽象方法的能力,但是失去了创建对象的能力。
抽象方法: 没有方法体,只有方法签名,必须用abstract修饰。
抽象类: 拥有抽象方法的类必须定义为抽象类,必须用abstract修饰。
注意:抽象类有构造器(可以供子类创建对象时使用),但是抽象类不能实例化(里面有抽象方法,没有方法体,调用没有意义)。
public class AbstractDemo {
public static void main(String[] args) {
Dog dog = new Dog();
//调用的run方法 一定是子类自己的run方法
dog.run();
}
}
/**
拥有抽象方法的类必须定义成抽象类
用abstract修饰
*/
abstract class Animal{
/*
父类知道子类会重写该方法的情况下
再编写方法体就没有任何意义
没有方法体的方法要定义成抽象方法,必须用abstract修饰
*/
public abstract void run();
}
/**
* Dog子类
*/
class Dog extends Animal{
@ Override
public void run() {
//继承抽象类必须重写抽象方法
System.out.println("狗跑");
}
}
/**
* Cat子类
*/
class Cat extends Animal{
@Override
public void run() {
//继承抽象类必须重写抽象方法
System.out.println("猫跑");
}
}