Day14 Object、类关系

本文解析Object类在Java中的关键作用,包括equals与hashCode的用途,toString的定制,以及finalize的垃圾回收机制。讲解了如何通过多态利用Object进行参数传递,并探讨类间关系如继承、实现和依赖聚合的区别。

Object

是java提供的根类,所有类都需要直接或者间接继承Object

Object种的方法是所有类都有的

Object xxx = new xxx()是可以发生多态的

因为多态的原因,一个方法需要传递数据,并且无法确定数据的类型的时候,就可以使用Object

 Equals

==比较基本数据类型的时候比较的是值的大小,但是比较引用类型的时候,比较的是内存地址

比较两个对象的时候往往是根据对象的属性的值进行比较,而不比较它们是不是同一个对象,因为这样没有任何价值,此时==就不能解决问题

于是Object中提供了一个equals方法,专门用于比较两个对象是否相同,是否为一个对象

        public boolean equals(Object obj){

                return this==obj;

        }

关于Object中的equals方法

设计目的:比较两个对象相等

默认比较内存地址,需要根据需求进行重写

 toString

设计目的,返回对象的字符串形式

输出一个引用类型的时候,默认输出内存地址

因为当我们输出一个引用类型的时候,会自动调用该对象的toString方法,默认的toString方法,智慧返回内存地址

比如我们需要在打印一个对象的时候,展示出对象中的属性信息,就要覆写toString方法

 Finalize

JVM的四大特性:跨平台,面向对象,多线程,自动垃圾回收机制

是什么:

        1.每个对象都有     

        2.不需要程序员手动调用,由系统自动调用

        3.垃圾:没有更多引用指向这个对象的时候,该对象被视为垃圾数据(创建了一个对象谁也别找到他),等待被回收

        4.当一个垃圾被回收之前,会自动调用该对象的finalize方法,所以结合finalize的执行时机,适合做一个资源销毁操作,只要是对象回收执行前的事,都可以放到finalize中

        5.如果我们手动调用了finalize方法,那么只是一个简单的方法调用而已,并不会被回收

 hashcode

hashcode方法的设计目的是为了给对象生成hash值

同一个对象生成多次hash值,值一定相同,但是多个对象也有可能生成相同的hash值,叫哈希冲突

 类与类之间的关系

1.继承

使用extends表示  类A extends 类B{}

                                接口A extends 接口B,接口C{}

类和类之间是单继承,接口与接口之间是多继承

2.实现implement

类A implement 接口B,接口C

类和接口是多实现

3.依赖

某个类中的方法的局部变量,是另一个类的对象引用,这种关系是临时性的,方法执行结束,关系就不存在了

4.关联

某个类的成员变量是另一个类对象的引用,这种关系一般是长期的

5.聚合

整体和局部可以分离,各自具备独立的生命周期,比如公司和员工

假如A需要保存B的引用,这个引用一般是调用处传递过来的,这样的话 调用处和A 都保存B的引用,此时就算A销毁了,B也不会销毁,因为还有其他引用指向

6.组合

又叫强聚合,组合关系要强于聚合,同样是整体和局部,但是不可分离,局部没有独立的生命周期

假如A需要保存B的引用,这个引用一般是调用处传递过来的,这样的话 调用处和A 都保存B的引用,此时就算A销毁了,B也不会销毁,因为还有其他引用指向

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值