各位好,我今天想要厘清我自己对于private data/method继承的观念
所以试着打了一些小范例:
class A {
private int data = 10;
private void showData() {
System.out.println(data);
}
}
class B extends A {
}
我对private的继承观念是:class B内还是会继承class A的data与showData()
private只是限制data与showData()只能在class A内scope内使用
所以以下范例,我可以理解为什么会错
class A {
private int data = 10;
private void showData() {
System.out.println(data);
}
}
class B extends A {
}
class Main {
public static void main(String[] args) {
B b = new B();
b.showData();
// wrong, showData() can only be accessed within the scope
// of class A
}
}
错误的地方是由于b.showData()的使用地方,是在class A的scope之外
但是以下范例,我就不能理解为什么编译不过了
class A {
public static void main(String[] args) {
B b = new B();
b.showData(); // wrong! I don't know why
}
private int data = 10;
private void showData() {
System.out.println(data);
}
}
class B extends A {
}
这个范例中,b.showData()是在class A的scope中
请问为什么不行呢?是不是我对继承或是private有什么理解错误的地方?
谢谢大家!