学习课程:Java工程师2022版
章节名称:第4周 Java基础进阶-面向对象之单例模式与多态
讲师:IT老齐
课程内容:
多态
一般说的多态是运行时多态
向上类型转换(Upcast):将子类型转换为父类型
-隐式/自动类型转换,是小类型到大类型的转换
向下类型转换(Downcast):将父类型转换为子类型
-强制类型转换,是大类型到小类型
通过instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题,提高代码的强壮性。
抽象类&抽象方法
应用场景:某个父类只是限定其子类应该包含怎样的方法,但不需要准确知道这些子类如何实现这些方法。
注意事项:
1、抽象类不能直接实例化
2、子类如果没有重写父类所有的抽象方法,则也要定义为抽象类
3、抽象方法所在的类一定是抽象类
4、抽象类中可以没有抽象方法
接口
接口定义了某一批类所需要遵守的规范
接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,它只规定这些类里必须提供某些方法
语法:
【修饰符】interface 接口名 【extends 父接口1,父接口2...】
{
零到多个常量定义...
零到多个抽象方法的定义...
零到多个默认方法的定义...(jdk1.8新增)
零到多个静态方法的定义...(jdk1.8新增)
}
注意事项:
接口可以实现多继承,即一个子接口可以同时继承多个父接口
实现接口的类如果不能实现所有接口中待重写的方法,则必须设置为抽象类
一个类可以继承自一个父类,同时实现多个接口
一个Java文件中可以存在多个类,多个接口,但是只能存在一个public修饰的类或接口,且此时文件名需要与public修饰的类或接口同名。
文件中定义接口,默认访问修饰符是包内可见。
内部类
在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类
与之对应,包含内部类的类被称为外部类
优势:内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类,更好的实现了信息隐藏。
枚举
enum关键字
可以减少代码中的bug, 增加代码的可读性。
枚举值不一定要大写,此处之所以是大写是因为枚举值是常量,而常量在Java中一般都是要大写的在类中或者类
外时,调用值可以:枚举名.枚举值
在其他类中定义枚举, 可以: 其他类名.枚举名.枚举值学习收获:
了解了java的多态及其实现
加深了解了抽象类,尤其是其设计意义
打卡截图: