Am:
1 抽象类 抽象方法
类 抽象 对象具体
抽象类就是类的抽象
Animal Wolf Dog
eat()
Animal使用的时候只是做了feed方法的参数。
发现Animal类的eat方法方法体什么都没有,也就是Animal的eat方法不需要有任何实现。
想这样不需要做任何实现的方法,在java中会定义抽象方法。
1.1抽象方法 abstract
没有方法体(body)的方法。
但是必须存在抽象类中。

将来根据业务逻辑,如果一个方法不需要实现,就声明成抽象方法。
此方法只会在子类中实现,去使用。
1.2抽象类
1 抽象类是不能实例化,即不能创建对象
2 抽象类也可以有属性和方法(普通方法)
3 抽象类的使用交给其子类完成,即重写父类的抽象方法,而且这种行为是必须的。
4 抽象类中不必一定有抽象方法,只要不会用一个类的对象,就可以考虑声明成抽象类。
5 抽象类的子类也可以是抽象类,那么将来其子孙类总有一个不是抽象类,则必须重写其父类的抽象方法,当然其父类也继承了父类的父类的抽象方法。
6 根据Ablibaba编程规范,抽象类的命名都会以Abstract或Base开头,比如Animal是抽象类,则类名会被定义成AbstractAnimal。
7 抽象类可以使用 匿名内部类(anonymous inner type) 的方式定义。了解

总结:抽象类=普通类+抽象方法
3 接口 interface !!!
接口不是类
3.1 定义

3.2 组成
A)常量 int AGE = 18;可以省略修饰符
B)方法 接口只能定义抽象方法
void eat();可以省略修饰符

3.3 使用
必须将接口中抽象方法实现,必须依靠类。使用implements关键字

3.4 接口使用多态

3.5 业务逻辑上理解,接口就是功能。
举例:
接口中常用的是方法,方法就是行为。有些开发者会认可接口就是行为的抽象。
接口以后使用的非常多,因为接口打破了继承的固定魔咒。
例如:
飞机会飞,鸟会飞,超人会飞
把飞这个行为抽象成一个接口。
飞机,鸟,超人三者没有任何关系
将来倘若有其他类具有飞这个功能,则一并实现Fly接口。
3.6 JDK8开始,接口中允许定义default方法。

总结:
1 接口不能实例化。
2 一个类先继承父类,后实现接口

3 一个类可以实现多个接口
4 一个接口可以”继承”多个接口

5 如果一个类没有完全实现接口中的抽象方法,则这个类一定要定义成抽象类。
总结:抽象类与接口的相同点和不同点(面试题)
作业:
门 open close
普通门 用钥匙打开
防盗门 指纹解锁
防盗的功能(发出警报)
警报器
发出警报
测试:使用多态
People people = new Man();
AbstractAnimal animal = new Wolf();
Fly fly = new Plane;
注意:有些接口JDK中已经存在接口供我们参考和使用
比如 序列化接口 Serializable
实现比较接口 Comparable
。。。

被折叠的 条评论
为什么被折叠?



