美文网首页java随笔
继承 ---- 重写

继承 ---- 重写

作者: 71150ce14a00 | 来源:发表于2017-06-19 17:35 被阅读10次

    继承:

    只有private修饰的成员不能被继承
    java支持单继承,多重继承(多层次继承),不支持多继承(一个子类有多个继承)
    不支持多继承: 因为类中的方法有方法体, 内容不一致,导致作为子类产生调用父类不确定性。

    注意:

    • 子类继承父类后,就可以使用父类中的成员, private修饰的成员(成员函数,成员变量)不能被子类继承
    • 如果父类的方法是静态方法,那么子类也必须是静态方法, 如果父类是非静态那么子类也必须是非静态,也就是说方法复写不能改变方法的访问方式

    重写:

    在子类中, 出现与父类一模一样的函数, 返回类型,方法名,参数列表都相同
    子类在复写父类的函数时, 子类的方法访问权限必须大等于父类的访问权限
    public > 默认 > private

    super和this的区别:

    this:

    1. 区分成员变量和局部变量
    2. 记录调用非静态方法地址对象
    3. 调用本类中的构造函数 例子: this(12) Demo(int a){}
      使用this调用本类构造函数,必须位于构造函数的第一行
      super() 调用父类,也必须位于构造函数的第一行
      使用this调用构造函数, 这个构造函数没有隐式三步,在最后没有this的构造函数中有隐式三步
      super:
    4. 调用父类中的成员变量和方法
    5. 调用父类中的构造函数
    6. super只是标识, 标识哪个空间是父类的空间

    子类重写父类时, 调用父类方法,super.父类方法名()

    关于继承中方法复写,我们在实际开发中基本都是非静态方法, 并且发现父类方法不是我们想要的代码, 那么我们可以定义一个类来继承父类, 并重写该方法在子类中的方法体写自己想要的代码

    对于任何类中都有隐式三步,第一步super() 的原因,因为子类在继承父类后要调用父类的非静态成员,因为父类的成员都是在构造函数隐式三步中初始化赋值的,所以要调用父类的super() 方法

    相关文章

      网友评论

        本文标题:继承 ---- 重写

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