一、訪問許可權修飾符
1.修飾屬性和方法
| 類內部 | 包內部 | 子類 | 包外部 |
---|
預設 | √ | √ | | |
public | √ | √ | √ | √ |
private | √ | | | |
protected | √ | √ | √ | |
2.修飾類
| 類內部 | 包內部 | 子類 | 包外部 |
---|
預設 | √ | √ | | |
public | √ | √ | √ | √ |
private | √ | | | |
protected | √ | | | |
零碎的一些知識點
- 被private、protected修飾的類一定是內部類
- 內部類只能被定義所在的類內部訪問
- 內部類不能作為超類
- 無任何修飾的類叫做友好類
- 在另一個類中使用友好類建立物件時,需要確保他們在同一個包內部
練習
PA
package PackageA;
public class PA {
protected int id;
protected String name;
String sex;
private class PA1
{
public void print()
{
System.out.println("在PA類內部定義的私有類PA1,僅供PA訪問");
}
}
protected class PA2
{
public void print()
{
System.out.println("在PA類內部定義的保護類PA2,僅供PA訪問");
}
}
public PA(int i,String s)
{
id=i;
name=s;
}
protected int getId()
{
return id;
}
String getSex()
{
return sex;
}
public String getName()
{
return name;
}
public void print()
{
System.out.println("id:"+id);
System.out.println("Name:"+name);
System.out.println("Sex:"+sex);
}
public void print1()
{
PA1 pa1=new PA1();
pa1.print();
PA2 pa2=new PA2();
pa2.print();
}
}
PB
package PackageA;
public class PB {
public static void main(String[] args)
{
PA a=new PA(1,"張三");
a.print();
a.id=2;
a.name="李四";
System.out.println("id:"+a.getId());
System.out.println("name:"+a.getName());
}
}
執行結果
Test
package PackageB;
import PackageA.*;
public class TestProtected {
public static void main(String[] args)
{
PA a=new PA(1,"張三");
a.print();
System.out.println("Name:"+a.getName());
}
}
執行結果