设为首页收藏本站language 语言切换
查看: 997|回复: 0
收起左侧

南京Java培训教你如何区分Java中的重载、覆盖和隐藏?

[复制链接]
发表于 2016-9-1 15:18:25 | 显示全部楼层 |阅读模式
  本篇文章南京万和Java培训介绍了关于Java方法的重载、覆盖与隐藏的区别分析。有些面试主考官总喜欢拿这三个概念去为难你,考察你的Java基础是否牢固。需要的朋友可以参考下哦!

  重载(overload):发生在一个类的内部,而且是针对方法而不是域而言。若方法的签名相同,但参数的个数或者参数的类型不同,则构成了重载。但返回类型不在考虑范围之内,也就是说,如果仅仅是返回类型不同,则构不成重载。

  覆盖(override):发生在父类和子类之间,而且是针对实例方法(即非静态方法)而不是域而言。

  构成覆盖要满足以下条件:

  1、父类中的static方法不可以被覆盖;

  2、父类中的final方法不可以被覆盖;

  3、方法的签名、参数个数以及参数类型都要相同;

  对于返回类型要说明两点:

  1)如果返回类型是引用类型,则覆盖方法的返回类型可以声明为父类方法声明的返回类型的子类型;

  2)如果返回类型是基本类型,则覆盖方法的返回类型必须和父类方法的返回类型相同;

  对于方法参数的说明:不管父类方法中的参数是否是final的,子类都可以修改这个参数;

  4、子类方法的访问权限要大于等于父类的访问权限;

  5、子类方法可以改变某些方法修饰符,如:synchronized、native和strictfp。

  6、子类方法的throws子句可以和父类方法不同,它列出的每一个异常类型都应该和父类中的异常类型相同或者是父类异常类型的子类;

  隐藏(hidden):发生在父类与子类之间,而且只是针对静态方法和域。说明:被声明为final的类方法不可以被隐藏。

  实例方法被子类的方法覆盖时,实际被调用的方法是在执行时决定的。

  类方法被子类的方法隐藏时,实际被调用的方法是在编译时决定的。

  想和兴趣相投的朋友们一起交流吗?那就来江苏万和计算机培训中心吧。而江苏万和作为南京专业的Java培训中心,欢迎广大有志于此行业发展的学员们加入。

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-7 01:00 , Processed in 0.109714 second(s), 21 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表