1、类和类之间巨有共同特征,将这些类特征提取出来,形成的就是抽象类。
2、抽象类属于引用数据类型。
3、语法
【修饰符列表】 abstract class 类名{
类体;
}
4、抽象类本身是不存在的,所以抽象类无法创建对象(无法实例化),但是抽象类有构造方法,这个构造方法是供子类使用的,所以抽象类是由用来被继承的。
5、非抽象子类继承抽象类,子类可以实例化对象。
- 一个非抽象的类继承抽象类,必须将抽象类中的抽象方法进行覆盖
6、抽象类的子类也可以是抽象类
7、final和abstract不能同时使用,二者对立。
8、抽象类关联到抽象方法
抽象方法表示没有实现的方法,没有方法体的方法
- 抽象方法的特点:
- 没有方法体,以分号结尾。
- 前面修饰符列表中有abstract关键字
例如:public abstract void doSome();
- 抽象类中不一定有抽象方法。但是抽象方法必须在抽象类中
public class AbstractTest01 {
public static void main(String[] args) {
Animal a1 = new Bird(); //向上转型(自动类型转换),多态。
//面向抽象编程。
//a1的类型是Animal,Animal是抽象的。
//面向抽象编程,降低程序的耦合度,提高程序扩展力,符合OCP原则。
a1.move();
}
}
abstract class Animal{
public abstract void move();
}
class Bird extends Animal{
//非抽象的子类继承抽象父类,必须要将父类继承过来的抽象方法覆盖,也可以叫做“实现”。
public void move() {
System.out.println("鸟儿在飞翔!!!");
}
}