这是一个面试问题.
子类是否继承私有字段?
我回答"否",因为我们无法使用"正常的OOP方式"访问它们.但是访谈者认为它们是继承的,因为我们可以间接访问这些字段或使用反射,它们仍然存在于对象中.
我回来后,在javadoc中找到以下引用:
超级私人会员
子类不继承其父类的私有成员.
你知道面试官的意见吗?
考虑这些类:
class Parent {
int a;
}
class Child extends Parent {
int a; // error?
}
Run Code Online (Sandbox Code Playgroud)
如果声明a中Child没有给出编译错误,由于多次声明int a?
我在理解继承时遇到了麻烦。在下面的代码中,为什么继承的方法不能访问子类中的字段?有什么方法可以访问子类字段而不覆盖继承的方法?
class Fish {
private String fishType = "Fish";
public String getFishType() {
return fishType;
}
}
class Marlin extends Fish {
private String fishType = "Marlin";
}
public class InheritanceTest {
public static void main(String[] args) {
Fish fish1 = new Fish();
Fish marlin1 = new Marlin();
System.out.println(fish1.getFishType());
System.out.println(marlin1.getFishType());
}
}
Run Code Online (Sandbox Code Playgroud)
此代码打印
Fish
Fish
Run Code Online (Sandbox Code Playgroud)
但我期待
Fish
Marlin
Run Code Online (Sandbox Code Playgroud)
每个人似乎都是基于私有字符串来回答的,但是即使我将字段更改为公开字符串,我仍然会遇到问题。问题不在于继承私有字段。
请在下面查看更新的代码。
class Fish {
public String fishType = "Fish";
public String getFishType() {
return fishType;
}
}
class Marlin extends Fish …Run Code Online (Sandbox Code Playgroud)