抽象类的概述:我们把一个不是具体的功能称为抽象的功能,而一个类如果有具体抽象 的功能,该类必须为抽象类。
抽象类的特点: (1) 抽象类和抽象的方法必须用abstract关键字修饰
(2) 抽象类中不一定有抽象方法,但是有抽象方法的类必须修饰为抽象类
(3)抽象不能实例化,因为他不是具体的,抽象类有构造方法,这里的构 造方法主要用于子类来访问父类数据的初始化
(4) 抽象的子类 a: 如果不想重写抽象方法,该子类是一个抽象类 b:重写所用 的抽象方法,这个时候子类是一个具体的类
抽象类的实例化其实是靠具体的子类来实现的。
抽象类的成员特点:(1). 成员变量:既可以是变量,也可以是常量。
(2). 构造方法:有(用于子类访问父类数据的出初始化)
(3). 成员方法:既可以是抽象的,也可以是非抽象的 抽象类的成员方法特性: (1)抽象方法 强制要求子类做的事情。 (2) 非抽象方法 子类继承的事情,提高代码复用性。
一个类如果没有抽象方法,可不可以被定义为抽象类?(可以,不让创建对象) abstract不能和哪些关键字共存? (private,final,static)
抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口不行
抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的。
接口中不能含有静态代码块以及静态方法(用static修饰方法),而抽象类是可以有静态代码块和静态方法。
一个类只能继承一个抽象类,而一个类却可以实现多个接口。
设计理念的区别: 抽象类 被继承体现的是:"is a"的关系,抽象类中定义的是该继承体系的共性功能。 接口 被实现体现的是:"like a "的关系。接口中定义的是该继承体系的扩展功能。
类和类:继承关系,只能是单继承,可以是多层继承。
类和接口: 实现关系,可以单实现,也可以多实现。 并且还可以在继承一个类的同时实现多个接口。
接口和接口: 继承关系,可以单继承,也可以多继承。