Day14 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也不会销毁,因为还有其他引用指向

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值