java中重载、覆盖和隐藏三者的区别分析

 更新时间:2013年04月27日 10:16:52   作者:  
本篇文章介绍了,在java中重载、覆盖和隐藏它们三者的区别分析。需要的朋友参考下

重载:方法名相同,但参数不同的多个同名函数

  注意:1.参数不同的意思是参数类型、参数个数、参数顺序至少有一个不同

     2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg:void a ()和int a() ,如果调用a(),出现歧义)

     3.main方法也是可以被重载的

覆盖:子类重写父类的方法,要求方法名和参数类型完全一样(参数不能是子类),返回值和异常比父类小或者相同(即为父类的子类),访问修饰符比父类大或者相同

   两同两小一大

    注意:子类实例方法不能覆盖父类的静态方法;子类的静态方法也不能覆盖父类的实例方法(编译时报错),总结为方法不能交叉覆盖

隐藏:父类和子类拥有相同名字的属性或者方法时,父类的同名的属性或者方法形式上不见了,实际是还是存在的

  注意:当发生隐藏的时候,声明类型是什么类,就调用对应类的属性或者方法,而不会发生动态绑定

      方法隐藏只有一种形式,就是父类和子类存在相同的静态方法

      属性只能被隐藏,不能被覆盖

      子类实例变量/静态变量可以隐藏父类的实例/静态变量,总结为变量可以交叉隐藏

隐藏和覆盖的区别:

  被隐藏的属性,在子类被强制转换成父类后,访问的是父类中的属性

  被覆盖的方法,在子类被强制转换成父类后,调用的还是子类自身的方法

  因为覆盖是动态绑定,是受RTTI(run time type identification,运行时类型检查)约束的,隐藏不受RTTI约束,总结为RTTI只针对覆盖,不针对隐藏

特殊情况:

  1.final修饰的属性可以被隐藏,但是不能被赋值,即不能用=来赋值,网上说final属性不能被修改,这个说法不准确,因为对于引用类型的变量用final修饰后,它只是不能被指向其他对象,但是可以改它自身的值,可以用ArrayList测试,final属性可以在运行的时候进行初始化,但是不能不出现初始化语句

  2.final修饰的方法不能被覆盖,可以被重载

  3.final修饰的类不能被继承

  4.private 方法隐式添加了final

相关文章

  • Spring Boot项目集成Knife4j接口文档的实例代码

    Spring Boot项目集成Knife4j接口文档的实例代码

    Knife4j就相当于是swagger的升级版,对于我来说,它比swagger要好用得多<BR>,这篇文章主要介绍了Spring Boot项目集成Knife4j接口文档的示例代码,需要的朋友可以参考下
    2021-12-12
  • Spring容器-BeanFactory和ApplicationContext使用详解

    Spring容器-BeanFactory和ApplicationContext使用详解

    这篇文章主要为大家介绍了Spring容器-BeanFactory和ApplicationContext的使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • java实现文件变化监控的方法(推荐)

    java实现文件变化监控的方法(推荐)

    下面小编就为大家带来一篇java实现文件变化监控的方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • Java默认传入时间段时间的实例

    Java默认传入时间段时间的实例

    下面小编就为大家带来一篇Java默认传入时间段时间的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • 希尔排序的算法代码

    希尔排序的算法代码

    希尔排序也是一种插入排序方法,实际上是一种分组插入方法。
    2013-03-03
  • 关于springcloud集成nacos遇到的问题

    关于springcloud集成nacos遇到的问题

    这篇文章主要介绍了关于springcloud集成nacos遇到的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Java利用poi读取Excel详解实现

    Java利用poi读取Excel详解实现

    Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java对Microsoft Office格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为简洁版的模糊实现
    2022-07-07
  • Java中FileWriter的用法及wirte()重载方法详解

    Java中FileWriter的用法及wirte()重载方法详解

    这篇文章主要介绍了Java中FileWriter的用法及wirte()重载方法详解,FileWriter是Java编程语言中的一个类,用于将字符写入文件,它提供了一种简单而方便的方式来创建、打开和写入文件,通过使用FileWriter,我们可以将字符数据写入文本文件,需要的朋友可以参考下
    2023-10-10
  • 浅谈JVM垃圾回收之哪些对象可以被回收

    浅谈JVM垃圾回收之哪些对象可以被回收

    这篇文章主要介绍了JVM垃圾回收之哪些对象可以被回收,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • SpringSecurity整合springBoot、redis实现登录互踢功能

    SpringSecurity整合springBoot、redis实现登录互踢功能

    这篇文章主要介绍了SpringSecurity整合springBoot、redis实现登录互踢,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05

最新评论