Object
object类时所有类的父类
一个类灭有使用extends关键字明确标识继承关系 ,则默认继承object类(包括数组)
java中的每个类都可以使用object类
equals测试
- 继承Object中的equals方法时,比较的是两个引用是否指向同一个对象
- 子类可以通过重写equals方法的形式,海边比较的内容
//注意空指针异常
toString测试
- 输出对象名时,默认会直接调用类中的toString
- 继承Object中的toString方法时,输出对象的字符串表示形式:类型信息+@ + 地址信息
- 子类可以通过重写toString方法的形式,改变输出的内容以及表现形式
final关键字
表示此类不希望被继承
加到方法前,表示不希望此方法被重写 不可修饰构造方法
加变量前,使用之前赋值之后不可修改
修饰类中成员属性,
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vG3YdPzy-1636164485256)(C:\Users\YANRONG.LEE\AppData\Roaming\Typora\typora-user-images\image-20211105170908116.png)]
可配合static使用
使用final修饰可以提高性能,但会降低可扩展性
快捷键:Alt+/ 显示提示菜单
注解简介
特殊标记
可以声明在包、类、属性、方法、局部变量、方法参数等的前面,用来对这些元素进行说明、注释
分类
按照运行机制分
- 源码注解 注解只在源码阶段保留,在编译阶段会被丢弃
- 编译时注解 注解会在编译时期保留,在加载class文件时会被丢弃
- 运行时注解 在运行阶段还起做作用,甚至会影响运行逻辑的注解
按照来源划分
- 来自JDK的注解
- 来自第三方的注解
- 我们自己定义的注解
元注解 定义注解的注解
单例模式
要点:
- 某个类只能有一个实例
- 必须自行创建实例
- 必须自行向整个系统提供这个实例
实现:
- 只提供私有的构造方法
- 含有一个该类的静态私有对象
- 提供一个静态的公有方法于创建、获取静态私有对象
代码实现方案:
- 饿汉式
对象创建过程中实例化
空间换时间 速度快,空间大 线程安全
- 懒汉式
静态公有方法中实例化
时间换空间
存在线程风险
1. 同步锁
2. 双重校验所
3. 静态内部类
4. 枚举
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I2m7aFKa-1636164485260)(C:\Users\YANRONG.LEE\AppData\Roaming\Typora\typora-user-images\image-20211105222148009.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IfQMC6gk-1636164485262)(C:\Users\YANRONG.LEE\AppData\Roaming\Typora\typora-user-images\image-20211105222157332.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KDzkZr8H-1636164485267)(C:\Users\YANRONG.LEE\AppData\Roaming\Typora\typora-user-images\image-20211105222241127.png)]
多态
意味着允许不同类的对象对同一消息做出不同的响应
-
编译时多态 设计时多态
方法重载
-
运行时多态
程序运行时动态决定调用哪个方法
必要条件:
- 满足继承关系
- 父类引用指向子类对象
向上转型
隐式转型、自动转型–>父类引用指向子类实例
可以调用子类重写父类的方法以及父类派生的方法,无法调用子类独有方法
小类转型为大类