【问题标题】:Which members are not inherited in a child class?哪些成员不会在子类中继承?
【发布时间】:2014-05-30 23:24:08
【问题描述】:

我正在尝试回答以下问题:

子类不会继承父类的某些成员。命名三 这样的成员。

我知道私有成员不会继承给子类,默认成员不会在包之外继承。谁能完成答案?

编辑:- 我相信静态成员是根据下面的演示继承的

public class sup {
    public static void main(String agr[]){
    }

    protected static int staticInt=0;
    protected final int finalInt=3;
    protected int protectedInt=0;
    public String publicString = "";
    private int privateInt=8;
}

class sub extends sup{
    public void del(){
        staticInt=1;
        staticInt=finalInt;
    }
}

【问题讨论】:

    标签: java class inheritance subclass


    【解决方案1】:

    来自JLS for Class Member

    构造函数、静态初始化器和实例初始化器不是成员,因此不会被继承。

    【讨论】:

    • 叮叮叮!最后,正确答案也来自 JLS :-)
    • @Duncan o 该死! :) 这确实是完全正确的答案。我怎么会错过... +1
    【解决方案2】:

    来自Inheritance 的 Oracle Java 文档:

    子类继承所有成员(字段、方法和嵌套 类)来自其超类。 构造函数不是成员,所以他们 不是子类继承的,而是超类的构造函数 可以从子类调用

    所以我认为您在这里缺少构造函数。 静态方法和字段也不被继承,在子类中重写时,它们只是重用签名和hide父类中方法/字段的实现。

    对于静态字段和方法的继承,请参阅 Duncan 所介绍的 discussion 和这篇精彩的教程 Overriding vs Hiding

    【讨论】:

    【解决方案3】:

    None-Answer 为 terms 的用法提供依据。

    上面回答了子类中可见的成员。 成员既是字段又是方法(每个都有自己的命名空间)。

    继承作为子实例的一部分,是另一个问题:不可见的private成员也被“继承”。 静态 成员是类实例的一部分,不会被继承(也不能被覆盖)。所有的 final 方法都不能被覆盖。

    可论证的构造函数不被继承;您必须在新的子构造函数中再次定义相同的签名。

    类中的其他声明可以是类定义。那里的关键字static 有不同的含义,人们可能会对可见性/继承做出明显的陈述。例如,对于具有<outer-class>.this(递归概念)的非静态内部类。

    【讨论】:

      【解决方案4】:

      构造函数、静态初始化器和实例初始化器。

      【讨论】:

      • 你能解释一下为什么不继承静态成员吗​​?我想这是一个术语,这里讨论的静态方法和实例方法之间存在一些细微差别:docs.oracle.com/javase/tutorial/java/IandI/override.html
      • 静态成员是继承的。我使用示例程序对其进行测试
      • 您是在谈论可见性吗?继承和可见性是两个不同的东西。静态成员可能可见但不能覆盖它们。
      • @Eugene 我仍然不相信您可以说静态方法不是继承的。您是否有任何来源可以引用明确说明的地方?
      • @Eugene 请参阅 JLS (docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.2) 中的示例 8.2-3。这表明静态字段是继承的。
      【解决方案5】:

      您不能继承私有字段和构造函数。 您不能继承构造函数,因为它们不是超类的成员。您可以从它的子类调用超类构造函数。并且你也可以访问超类的私有成员,可以通过超类的public或者protected方法访问。

      【讨论】:

      • -1 静态成员被继承。请参阅其他答案下的讨论。
      猜你喜欢
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      • 2011-09-14
      • 2013-04-11
      • 1970-01-01
      • 2015-03-21
      相关资源
      最近更新 更多