美文网首页
Java 继承带来的覆盖和隐藏问题

Java 继承带来的覆盖和隐藏问题

作者: 沉淀之际 | 来源:发表于2019-04-24 17:18 被阅读0次

继承是Java面向对象的三大基础特性。

为什么需要继承

1、提高代码重用性
2、提高代码可维护性

继承的特性

  • 子类拥有父类非 private 的属性、方法。
  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
  • 子类可以用自己的方式实现父类的方法。
  • Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
  • 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。

补充

  • 子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。如果父类的构造器带有参数,则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。

  • 如果父类构造器没有参数,则在子类的构造器中不需要使用 super 关键字调用父类构造器,系统会自动调用父类的无参构造器。

什么是覆盖和隐藏

  • 覆盖:子类重写父类的方法,要求方法名和参数类型完全一样(参数不能是子类),返回值和异常比父类小或者相同(即为父类的子类),访问修饰符比父类大或者相同。
    方法不能交叉覆盖:
    1、子类实例方法不能覆盖父类的静态方法;
    2、子类的静态方法也不能覆盖父类的实例方法(编译时报错)
    总结:覆盖是对于实例方法而言的

  • 隐藏:父类和子类拥有相同名字的属性或者方法( 方法隐藏只有一种形式,就是父类和子类存在相同的静态方法)时,父类的同名的属性或者方法形式上不见了,实际是还是存在的。
    (1)当发生隐藏的时候,声明类型是什么类,就调用对应类的属性或者方法,而不会发生动态绑定
    (2) 属性只能被隐藏,不能被覆盖
    (3)变量可以交叉隐藏:子类实例变量/静态变量可以隐藏父类的实例/静态变量
    总结:隐藏是对于静态方法和成员变量(静态变量和实例变量)而言的

隐藏和覆盖的区别

(1)被隐藏的属性,在子类被强制转换成父类后,访问的是父类中的属性
在无强制转换时子类要访问父类的属性使用super关键字
(2)被覆盖的方法,在子类被强制转换成父类后,调用的还是子类自身的方法
子类要是想访问父类的方法,可以使用super关键字

相关文章

  • Java 继承带来的覆盖和隐藏问题

    继承是Java面向对象的三大基础特性。 为什么需要继承 1、提高代码重用性2、提高代码可维护性 继承的特性 子类拥...

  • c++重载、覆盖、隐藏的区别

    c++重载、覆盖、隐藏的区别 既然说到了继承的问题,那么不妨讨论一下经常提到的重载,覆盖和隐藏 4.1成员函数被重...

  • 隐藏和覆盖、多态、虚函数【C++】

    【C++】隐藏和覆盖 隐藏: overhide 派生类中隐藏了基类中所有的同名函数 ①同名、不同参 ②继承关系下的...

  • JAVA学习笔记(四)

    继承要解决的问题什么是继承关系子类继承了父类的哪些成员方法覆盖方法重载(Overload)和方法覆盖(方法重写 O...

  • Java继承中方法的覆盖和重载

    在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称、返...

  • C++的继承,重载,隐藏,覆盖

    [TOC] 继承,重载的概念对于一位C++程序员来说就是轻车驾熟,而隐藏和覆盖也并不陌生。但是,当我们写了一个自认...

  • Java自学-接口与继承 隐藏

    Java中的方法隐藏 与重写类似,方法的重写是子类覆盖父类的对象方法 隐藏,就是子类覆盖父类的类方法 步骤 1 :...

  • 【整理归纳】继承与多态(继承)

    继承 为什么要继承 不做重复的事情,减少不必要的工作,提高工作效率。 继承方式 重载、隐藏(重定义)与覆盖(重写)...

  • JAVA

    Java语言的特性 Java的三大特性:封装、继承、多态 封装:隐藏对象的属性和实现细节,仅对外提供公共的访问方式...

  • java继承之方法覆盖

    总结: 1、什么时候要进行重写? 如果父类的方法已经无法满足当前子类的方法,需要将父类的方法重新写一边 2、子类如...

网友评论

      本文标题:Java 继承带来的覆盖和隐藏问题

      本文链接:https://www.haomeiwen.com/subject/ihaggqtx.html