编译时多态:静态绑定 【方法的重载】
运行时多态:动态绑定【方法的重写】
内部类
是类的五大成分之一,如果一个类定义在另一个类的内部,这个类就是内部类
场景:当一个类的内部包含了一个完整的事物,且这个事物没有必要单独设计时,就可以把这个事物设计成内部类
静态内部类
成员内部类
JDK16之前成员内部类中不能定义静态成员
访问冲突变量
总结
局部内部类
匿名内部类(重点)
特点:
匿名内部类本质就是一个子类,并会立即创建出一个子类对象
作用:
用于更方便的创建一个子类对象
匿名内部类在开发中的使用场景
总结:
枚举
枚举类中的名称都是常量【常量名大写】
values() : 获取枚举所有的枚举项
valueOf() :将字符串名称转换为枚举对象
枚举的使用场景
泛型
泛型就是一个类型变量,只能用应用类型去进行赋值
定义类、接口、方法时,同时声明了一个或者多个类型变量
作用:
泛型的作用:可以在编译阶段去检查数据的类型是否合法,可以避免不必要的类型强制转换及类型转换异常
泛型提供了在编译阶段约束所能操作的数据类型,并自动进行检查的能力!这样可以避免强制类型转换,及其可能出现的异常。
泛型若没有指定,默认就是0bject类型
泛型的本质:
把具体的数据类型作为参数传给类型变量。
泛型类
例
泛型接口
如果子类也不确定类型,依旧可以使用泛型来指定
泛型方法
<T> 定义泛型T
E 使用泛型
通配符
就是“?”,可以在“使用泛型”的时候代表一切类型;E T K V 是在定义泛型的时候使用。
泛型的上下限
泛型上限 extends
泛型下限 super
泛型的擦除问题喝注意事项
API
就是Java帮我们已经写好一些程序,如:类、方法等,我们直接拿过来用就可以解决一些问题。
Object
object类是Java中所有类的祖宗类,因此,Java中所有类的对象都可以直接使用object类中提供的一些方法。
常用
toString
equals方法是用来比较两个对象是否相同
总结
Object类提供的对象克隆的方法
1.先实现接口
2.重写克隆方法
3.克隆
当某个对象调用这个方法时,这个方法会复制一个一模一样的新对象返回。
浅克隆
拷贝出的新对象,与原对象中的数据一模一样(引用类型拷贝的只是地址
深克隆
对象中基本类型的数据直接拷贝。
对象中的字符串数据拷贝的还是地址。
对象中还包含的其他对象,不会拷贝地址,会创建新对象。
访问权限可以变大
返回值类型可以变小
native方法,是调用底层的方法
浅克隆
深克隆
总结
Objects
Objects是一个工具类,提供了很多操作对象的静态方法给我们使用。
Objects类的常见方法
equals
先判断a 和 b的地址 如果地址不同
判断 a != null
当a不为空再执行a.equals(b)