多态以及Object类中部分方法介绍

一、方法重写/覆盖(override)

1.基本概念:

方法覆盖(重写)就是子类有一个方法,和父类的某个方法的名称、返回类型、参数一样,那么我们就说子类的这个方法覆盖了父类的方法。

2.注意事项和使用细节

①子类的方法的参数,方法名称,要和父类方法的参数、方法名称完全一样。
②子类方法的返回类型和父类方法返回类型一样,或者是父类返回类型的子类。比如:父类返回类型是Object,子类方法返回类型是String(String是Object类的子类)
③子类方法不能缩小父类方法的访问权限(可以扩大)(public->protected->默认->private)
在这里插入图片描述

二、多态

1.基本概念

方法或对象具有多种形态,是面向对象的第三大特征。多态是建立在封装和继承基础之上的。

2.多态的具体体现:

1)方法的多态:重写和重载就体现多态
2)对象的多态(核心)
①一个对象的编译类型和运行类型可以不一致
②编译类型在定义对象时,就确定了,不能改变
③运行类型是可以变化的
④编译类型看定义时=的左边,运行类型看=的右边

3.多态注意事项和细节讨论

1)多态的前提:两个对象(类)存在继承关系
2)多态的向上转型:
①本质:父类的引用指向了子类的对象
②语法:父类类型 引用名 = new 子类类型();
③特点:编译类型看左边,运行类型看右边。可以调用父类中的所有成员(需遵守访问权限),不能调用子类中特有成员(因为在编译阶段,能调用哪些成员,是由编译类型来决定的);最终运行效果看子类(运行类型)的具体实现
3)多态的向下转型:
①语法:子类类型 引用名 = (子类类型) 父类引用;
②只能强转父类的引用,不能强转父类的对象
③要求父类的引用必须指向的是当前目标类型的对象
④可以调用子类类型中所有的成员

4.属性没有重写之说,属性的值看编译类型

5.instanceOf比较操作符,用于判断对象的运行类型是否为XX类型或XX类型的子类型

三、JAVA的动态绑定机制

1.当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定
2.当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用

四、多态的应用

1.多态数组:
数组的定义类型为父类类型,里面保存的实际元素类型为子类类型
2.多态参数
方法定义的形参类型为父类类型,实参类型允许为子类类型

五、==和equals的对比【面试题】

==是比较运算符
1.即可以判断基本类型,又可以判断引用类型。
2.如果判断基本类型,判断的是值是否相等。例如:int i = 10;double d = 10.0;(true)
3.如果判断引用类型,判断的是地址是否相等,即判定是不是同一个对象
equals
4.equals:是Object类中的方法,只能判断引用类型
5.默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相等。比如:Integer,String【查看String和Integer的equals源代码】
Object的equals方法默认就是比较对象的地址是否相同,也就是判断两个对象是不是同一个对象
String重写了Object的equals方法,比较两个字符串的值是否相同
Integer也重写了Object的equals方法,判断两个值是否相等
6.概念:指示其他某个对象是否与此对象“相等”

六、hashCode方法

1.概念:返回该对象的哈希码值
2.提高具有哈希结构的容器的效率
3.两个引用,如果指向的是同一个对象,则哈希值肯定是一样的
4.两个引用,如果指向的是不同对象,则哈希值是不一样的
5.哈希值主要根据地址号来的,不能完全将哈希值等价于地址
6.集合中hashCode如果需要的话,也会重写

七、toString方法

1.默认返回:全类名(包名+类名)+@+哈希值的十六进制
2.子类往往重写toString方法,用于返回对象的属性信息
3.重写toString方法,打印对象或拼接对象时,都会自动调用该对象的toString形式
4.当直接输出一个对象时,toString方法会被默认的调用
5.概念:返回该对象的字符串表示

八、Finalize方法

1.基本概念:当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
2.当对象被回收时,系统自动调用该对象的finalize方法。子类可以重写该方法,做一些释放资源的操作(数据库连接,打开文件等);如果不重写,就会调用Object类的finalize,即默认处理
3.什么时候被回收:当某个对象没有任何引用时,则jvm就认为这个对象是一个垃圾对象,就会使用垃圾回收机制来销毁该对象,在销毁该对象前,会先调用finalize方法。
4.垃圾回收机制的调用,是由系统来决定(有自己的GC算法),也可以通过System.gc()主动触发垃圾回收机制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值