首先對於Java中的protected訪問控制符,具有如下屬性
- protected 訪問控制符能被用於方法和成員變量
- 聲明爲protected的方法和成員變量能被同一個包裏的所有類所訪問,就像默認修飾符package一樣
- 能被該類的子類所訪問,子類可以和父類不在一個包中。
- 另一個包中的子類只能通過子類或其子類的引用來訪問父類中受保護的成員。同一包中的子類沒有此限制。這樣可以確保來自其他包的類只訪問屬於其繼承層次結構一部分的成員。
在子類中是可以直接訪問父類的protected變量
class Some
{
protected int x;
Some() {} //子類沒有指定構造函數,故必須有無參構造函數
Some(int x)
{
this.x = x;
}
}
class Other extends Some
{
Other(int x1)
{
x = x1; //子類直接訪問父類的protected變量
}
}
public class Test
{
public static void main(String[] args)
{
new Other(10);
}
}
在子類中可以通過子類的對象訪問父類中的protected變量
import java.util.*;
class Some
{
protected int x;
Some() {}
Some(int x)
{
this.x = x;
}
}
class Other extends Some
{
Other() {}
Other(int x1)
{
Other o = new Other(); //子類可以通過子類的對象訪問父類中的protected變量
o.x = x1;
}
}
public class Test
{
public static void main(String[] args)
{
new Other(10);
}
}