我正在尝试回答以下问题:
子类不会继承父类的某些成员。三个名字 这样的成员。
我知道私有成员不会继承到子类,并且默认成员不会在包外继承。任何人都可以完成答案吗?
编辑: - 我相信静态成员是根据以下演示继承的
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;
}
}
答案 0 :(得分:6)
构造函数,静态初始值设定项和实例初始值设定项不是成员,因此不会继承。
答案 1 :(得分:2)
来自Inheritance的Oracle Java文档:
子类继承所有成员(字段,方法和嵌套 来自其超类的类)。 构造函数不是成员,所以他们 不是由子类继承,而是超类的构造函数 可以从子类
调用
所以我认为你在这里缺少施工人员。
静态方法和字段也不会被继承,当它们在子类中重写时,它们只是重用签名和hide
父类中方法/字段的实现。
对于静态字段和方法的继承,请参阅由Duncan提供的此discussion,以及这篇精彩的教程Overriding vs Hiding
答案 2 :(得分:1)
构造函数和静态初始化程序以及实例初始值设定项。
答案 3 :(得分:1)
无 - 以条款用法为例进行回答。
上面回答了子类中可见的成员。 成员是字段和方法(每个都有自己的命名空间)。
继承作为子实例的一部分,是另一个问题:也是不可见的私有成员"继承"因此。 静态成员是类实例的一部分,不会被继承(也不能被覆盖)。所有 final 方法都无法覆盖。
Arguable构造函数不是继承的;您必须在新的子构造函数中再次定义相同的签名。
类中的其他声明可以是类定义。关键字static
具有不同的含义,可以在可见性/继承上做出明显的陈述。例如,对于具有<outer-class>.this
(递归概念)的非静态内部类。
答案 4 :(得分:0)
您无法继承私有字段和构造函数。 你不能继承构造函数,因为它们不是超类的成员。你可以从它的子类中调用一个超类构造函数。并且您还可以通过公共或受保护的超级类方法访问超类的私有成员。