抽象类
抽象方法的概念
抽象方法主要指不能具体实现的方法, 并且使用abstract关键字修饰, 就也就没有方法体
具体格式如下: 访问权限 abstract 返回值类型 方法名(形参列表);
public abstract void cry();
抽象类的概念
抽象类主要指不能具体实例化的类并且使用abstract关键字修饰, 也就是不能创建对象
抽象类和抽象方法的关系
- 抽象类中可以有成员变量, 构造方法, 成员方法
- 抽象类中可以没有抽象方法, 也可以有抽象方法
- 拥有抽象方法的类必须是抽象类. 因此真正意义上的抽象类应该是具有抽象方法并且使用
abstract
关键字修饰的类
抽象类的实际意义
- 抽象类的实际意义不在于创建对象而在于被继承
- 当一个类继承抽象类后必须重写抽象方法, 否则该类也变成抽象类. 也就是抽象类对子类具有强制性和规范性. 因此叫做模板设计模式
开发经验分享
- 在以后的开发中推荐使用多态的格式. 此时父类类型引用直接调用的所有方法一定是父类中拥有的方法. 若以后更换子类时, 只需要将
new
关键字后面的子类类型修改而其它地方无需改变就可以立即生效. 从而提高了代码的可维护性和可扩展性 - 该方式的缺点就是: 父类引用不能直接调用子类独有的方法, 若调用则需要强制类型转换
接口
接口的概念
- 接口就是一种比抽象类还抽象的类, 体现在所有方法都为抽象方法
- 定义类的关键字是
class
, 定义接口的关键字是interface
类和接口之间的关系
抽象类和接口的主要区别
- 定义抽象类的关键字是
abstract class
, 而定义接口的关键字是interface
- 继承抽象类的关键字是
extends
, 而实现接口的关键字是implements
- 继承抽象类支持单继承, 而实现接口支持实现
- 抽象类中可以有构造方法, 而接口中不可以有构造方法
- 抽象类中可以有成员变量, 而接口中只可以有常量
- 抽象类中可以有成员方法, 而接口中只可以有抽象方法
- 抽象类中增加方法时子类可以不用重写 , 而接口中增加方法时实现类需要重写(Java8以前的版本)
- 从Java8开始增加新特性, 接口中允许出现非抽象方法和静态方法, 但非抽象方法需要使用
default
关键字修饰 - 从Java9开始增加新特性, 接口中允许出现私有方法
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。