- 我有以下Foo類,它具有主要方法。
- Foo擴展了Nee。
- Foo類在com.package1中,Nee類在com.package2中。
- 問題是我不能通過它的對象從Foo 類訪問Nee的受保護方法。這是爲什麼?(這裏的理論認爲,保護成員可以通過子類或類在同一個包內訪問)
Foo類看起來像下面,Java - 受保護的方法不能從子類訪問
package com.package1;
import com.package2.Nee;
/**
*
* @author Dilukshan Mahendra
*/
public class Foo extends Nee{
public static void main(String[] args) {
Nee mynee = new Nee();
/* mynee.sayProtected(); This gives me a compile error,
sayProtected() has protected
access in com.package2.Nee
*/
}
}
東東類是像下面,
package com.package2;
/**
*
* @author Dilukshan Mahendra
*/
public class Nee {
protected void sayProtected(){
System.out.println("I'm a protected method in Nee!");
}
}
你正試圖從另一個包中訪問。 – AloneInTheDark
受保護的成員只能通過子類對象在包或子類中訪問。在不同的包中,你不能通過超級類對象訪問受保護的成員 – Braj
@AloneInTheDark是的,但它是Nee的一個子類,它理論上說你可以訪問同一包中的一個受保護的成員或包之外的子類 –