今天说了三种类:Object类 内部类 匿名内部类
一、Object类
所有类的父类,如果一个类没有去继承某个类的时候,默认继承Object类
Object类中的一些常用方法:
1.void finalize()
当对象没有引用指向它的时候,他就成了垃圾。此时由对象的垃圾回收器调用此方法回收垃圾,释放资源
2.Class getClass()
后面框架将反射时再具体讲
3.String toString()
返回字符串表现形式
表示格式:
getClass().getName()+"@"+Integer.toHexString(hashCode());
4.int hashCode()
5.boolean equals(Object obj)
用于比较两个对象的地址值是否相同。对我们来说意义不大,因为只要new就会在内存中重新开辟新的存储空间。我们需要的是比较对象的值是否相等。所以需要对该方法进行重写。
记住:官方给我们提供的类中equals方法都是重写过后的方法
面试题:为什么重写equals的时候要重写hashCode?
二、内部类(了解)
定义:在一个类的内部再定义一个类,称为内部类或嵌套类
备注:内部类往往只服务于它的外部内,可以访问外部内的成员变量和成员方法(包含私有的)
内部类访问特点:
内部类要访问外部类的内容时可以直接访问,而外部类想要访问内部类内容时,必须通过创建内部类对象之后才能访问
三、匿名内部类(重点)
定义:没有名字的内部类,主要就是为了简化代码。
前提条件:必须要有继承或实现一个接口
语法:
new 父类名或接口名(){
重写父类中的方法或实现接口中的抽象方法或者自定义相关方法(一般不超过3个)
}
什么时候使用匿名内部类?
接口中的或父类的方法很少用到的时候,偶尔用到的时候考虑用匿名内部类方式完成。
案例:定时器