客戶端程式設計師:即在其應用中使用資料類型的類消費者,他的目標是收集各種用來實現快速應用開發的類別。
類別創建者:即建立新資料類型的程式設計師,目標是建構類別。
存取控制存在的原因:a、讓客戶端程式設計師無法觸及他們不應該觸及的部分 ; b、允許庫設計者可以改變類別內部的工作方式而不用擔心會影響到客戶端程式設計師
java的四個關鍵字:public、protected、default、private(他們決定了緊接在後被定義的東西可以被誰使用)
適用範圍
∨ ∨ ∨ ∨ (對任何人都是可用的)
protect 〠∠ protect 〠∠ 〠 vate相同的權限)
default ∨ ∨ × × 中包存取權限,即整個包在整個包中。被訪問)
private ∨ × × × (除類型創建者和類型的內部方法之外的任何人都不能訪問的元素)
以下,用代碼進行詳解(建四個類Person Student Teacher Parents 和一個測試類別)
package com.zq.demo.test1; /** * 类内 * @author Administrator */ public class Person { public String uname = "王五"; public void introduceMyself(){ System.out.println(uname); } } package com.zq.demo.test1; //同一个包 public class Student { Person p = new Person(); public void test(){ System.out.println(p.uname); } } package com.zq.demo.test1; //子类 public class Teacher extends Person{ public int age; Person p = new Person(); public void test1(){ System.out.println(p.uname); } } package com.zq.demo.test2; //不同包 import com.zq.demo.test1.Person; public class Parents { public String uname = "haha"; Person p = new Person(); public void test2(){ System.out.println(p.uname); } }測試類別的結果 顯示public在上述皆能存取到
用同樣的四個類別 來測試protected
在將Person .uname is not visible (說明不能跨包)
其他三個無影響
說明除了跨包 其他均不影響訪問
private
?類別中有關uname的set、get方法可以進行存取default