现实中不存在的东西
在Java中,只声明,不实现
定义与概念public abstract class Animal { //类中有抽象方法,类也必须为一个抽象类
//抽象方法abstract,直接用;结尾,没有方法体
public abstract void eat();
}
继承的两种方式
- 重写抽象类中包含的所有方法
- 也成为抽象类
-
abstract ; 无方法体
-
抽象类不可以创建对象(实例化),但是也可以参照多态的方式,通过子类对象实例化对象(抽象类多态)
-
抽象类的子类必须重写父类中的抽象方法(子类中的方法不是成为抽象方法 ),否则,子类也必须是抽象类
-
由于第三点特点,通过抽象可以强制的要求子类中有哪些方法
-
抽象类中可以有正常方法,不一定全为抽象方法(接口全是)
-
抽象类中可以有成员变量(常量也可以),非抽象方法
-
可以有带参构造与无参构造(虽然不能直接实例化,可以间接)
public abstract class animal {
public animal() {
System.out.println("抽象类的构造方法调用了");
}
public abstract void m();
}
public class animalImpl extends animal{
@Override
public void m() {
System.out.println("重写的抽象方法调用了");
}
}
public class demo {
public static void main(String[] args) {
animal a = new animalImpl();
a.m();
}
}
输出:
抽象类的构造方法调用了 //抽象类可以有构造方法,在实例化抽象类的子类的时候首先调用
重写的抽象方法调用了



