JAVA第八天!

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
。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值