抽象类
- 概述
- 抽象就是看不懂的
- 抽象类特点
- 抽象类和抽象方法必须用abstract关键字修饰
- 抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口
- 抽象类不能实例化,只能按照多态的方式,由具体的子类实例化,其实这也是多态的一种,抽象类多态
- 抽象类的子类
- 抽象类
- 重写抽象类中所有的抽象方法
- 抽象类的成员特点
- abstract不能修饰成员变量
- 有构造方法,用于子类访问父类数据的初始化
- 成员方法可以是抽象的也可以是非抽象的
- 抽象方法:强制要求子类做的事情
- 非抽象方法:子类继承的事情,提高代码的复用性
- 注意:
- 一个抽象类没有抽象方法也可以定义为抽象类
- 目的只有一个,不让其他类创建本类对象,交给子类完成
- abstract不能与以下关键字共存
- private:私有的变量和方法只能在本类中使用,子类不能进行访问;而abstract是要子类能够访问并且进行重写
- static:静态的变量和方法是通过类名进行调用的,而abstract通过类名来调用是没有意义的
- final:定义为常量的变量和方法不能被重写的,而abstract就是需要子类对其进行重写
- 一个抽象类没有抽象方法也可以定义为抽象类
接口
- 概述
- 从狭义的角度就是指Java中的interface
- 从广义的角度价格对外提供规则的都是接口
- 接口特点
- 接口用关键字interface表示
- 类实现接口用implements表示
- 接口不能实例化,只能按照多态的方式来实例化
- 接口的子类
- 抽象类:意义不大
- 具体类:要重写接口中的所有抽象方法
- 接口成员特点
- 成员变量:只能是常量,默认修饰符为public static final
- 构造方法:没有
- 成员方法:只能是抽象方法,默认修饰符为public abstract
- 类、接口两两之间的关系
关系 | 类 | 接口 |
---|---|---|
类 | 继承关系,只能是单继承,可以多层继承 | 实现关系,可以但实现或者多实现,还可以在继承一个类的同时实现多个接口 |
接口 | 同类与接口 | 继承关系,可以单继承,也可以多继承 |
- 接口和抽象类的区别
区别 | 成员变量 | 成员方法 | 构造方法 |
---|---|---|---|
抽象类 | 可以是变量,也可以是常量 | 可以抽象,也可以不抽象 | 有 |
接口 | 只能是常量 | 只可以抽象 | 没有 |