内部类和Object
1.什么是内部类:
一个类中包含一个类,包含的类就是内部类
特点:
可生成class文件
可访问外部类私有属性
提供了外部类实现的方法
2.实例内部类
对象的创建依赖外部类对象
在实例内部类中不能定义静态属性
当外部类属性和内部类属性重名时,优先调内部类的。
3.静态内部类
对象的创建不依赖外部类对象,只需类名或直接创建
在静态内部类中,不能使用外部类的成员属性
4.局部类部类
概述:
在外部类的方法体内,定义的一个类
特点:
只能在方法内部去使用
如果在局部内部类中需要使用局部变量,默认家final,来确保生命周期的一致性
**
5.匿名内部类(重点掌握)
**
概述:
在写法上类似局部内部类;本质上是多态,能用多态的地方,肯定能使用匿名内部类
应用场景
如果值需要实例化一次对象,则使用匿名内部类;好处:提高效率
接口回调写法
接口引用作为形参,匿名内部类作为实参传递
接口回调的扩展
在回调前做些操作,回调后做些操作
6.Object
所有类的根类,任何类都是直接或间接继承Object
任何对象都可调用Object的方法
可作为参数接受任何对象
可作为返回值接受任何对象
7.getClass方法***
获取类的类对象
相同类不同对象,他们的类对象也是一致的
8.hashCode方法(重点掌握)
每个不同对象都可得到hash值,相同对象,hash值一样
用法;
往往需要重写hashCode,如果属性值一致,则hash值相同
**
9.toString方法***(重点掌握)
**
返回对象字符串表示形式
不重写得到类名@hash值,重写则往往返回属性值的字符串形式
一般只需要直接打印对象即可,内部会调toString;一般用于测试
**
10.equals方法***(重点掌握)
**
Object的equals方法比较对象地址是否相等
重写equals,往往比较属性值是否相等
注意重写步骤及相关判断
**
11.finalize方法(重点掌握)
**
如果有垃圾对象需要回收,会触发到该方法
自动触发:内存用完了,则会自动销毁所有垃圾对象
手动触发:需调用System.gc()