訪問控制權限
Java有四種訪問控制權限:public,protected,default,private
。
No. | 範圍 | public | protected | default | private |
---|---|---|---|---|---|
1 | 在同一個類中 | √ | √ | √ | √ |
2 | 在同一包的不同類 | √ | √ | √ | |
3 | 在不同包的子類 | √ | √ | ||
4 | 在不同包的非子類 | √ |
protected
權限與包的定義有關。
範例:定義com.java.demoA.A類
package com.java.demoa;
public class A {
protected String info = "Hello";
}
範例:定義com.java.demoB.B類
package com.java.demoB;
import com.java.demoa.A;
public class B extends A { // 與A處於不同包中
public void print() {
System.out.println("A中的info:" + super.info);
}
}
範例:測試
package com.java.test;
import com.java.demoB.B;
public class Test {
public static void main(String[] args) {
new B().print(); // A中的info:Hello
}
}
範例:由Test類直接輸出A類中的屬性
package com.java.test;
import com.java.demoa.A;
public class Test {
public static void main(String[] args) {
System.out.println(new A().info); // 報錯,無法訪問info
}
}
由於Test與A不在同一個包,並且沒有繼承關係,所以是無法訪問protected權限。
總結:
1.Java的封裝性是以private、protected、default三種權限爲主;
2.對於權限的選擇,建議如下:
·聲明屬性就用private;
·聲明方法就用public;
3.關於命名要求:
· 類名稱每個單詞的首字母大寫,其餘字母小寫,例如:StudentInfo;
· 屬性名稱第一個單詞字母小寫,而後每個單詞首字母大寫,例如:studentName;
· 方法名稱第一個單詞字母小寫,而後每個單詞首字母大寫,例如:toString();
· 常量名全部大寫,例如:MSG;
· 包名全部小寫,例如:com.java.demo