[問題] 請問private繼承的問題
各位好,我今天想要釐清我自己對於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有甚麼理解錯誤的地方?
謝謝大家!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.136.226.85
※ 文章網址: http://www.ptt.cc/bbs/java/M.1413024841.A.379.html
推
10/11 18:57, , 1F
10/11 18:57, 1F
推
10/11 19:44, , 2F
10/11 19:44, 2F
→
10/11 19:54, , 3F
10/11 19:54, 3F
→
10/11 20:10, , 4F
10/11 20:10, 4F
→
10/11 22:05, , 5F
10/11 22:05, 5F
→
10/11 22:06, , 6F
10/11 22:06, 6F
→
10/11 22:06, , 7F
10/11 22:06, 7F
→
10/11 22:09, , 8F
10/11 22:09, 8F
→
10/11 22:10, , 9F
10/11 22:10, 9F
推
10/11 22:23, , 10F
10/11 22:23, 10F
→
10/11 22:24, , 11F
10/11 22:24, 11F
→
10/11 22:24, , 12F
10/11 22:24, 12F
萬分感謝ssccg!
我測試了一下
class A {
public static void main(String[] args) {
B b = new B();
((A)b).showData();
}
private int data = 10;
private void showData() {
System.out.println(data);
}
}
class B extends A {
}
這樣的確可以正確編譯!
但是如果是
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();
((A)b).showData(); // wrong here
// The method showData() from the type A is not visible
}
}
也就是把((A)b).showData();寫在class A的scope之外
仍然還是不行的,無法通過編譯
所以class scope對於class private member可否access也是考量因素之一?
※ 編輯: minGW128 (220.136.226.85), 10/11/2014 23:18:57
→
10/12 00:11, , 13F
10/12 00:11, 13F
→
10/12 00:14, , 14F
10/12 00:14, 14F
java 近期熱門文章
PTT數位生活區 即時熱門文章