各位好,我今天想要釐清我自己對於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有甚麼理解錯誤的地方?
謝謝大家!