封裝和private關鍵字 2016年10月11日 00:07:01 閱讀數:1628 /* private: 是一個權限修飾符 可以修飾成員變量和成員方法 被其修飾的成員只能在本類中被訪問 */ class Demo { //int num = 10; //用private修飾 private int num = 10; public void show() { System.out.println(num); } private void method() { System.out.println("method"); } public void function() { method(); } } class PrivateDemo { public static void main(String[] args) { Demo d = new Demo(); //不能方法私有的成員變量 //System.out.println(d.num); d.show(); //不能訪問私有的成員方法 //d.method(); d.function(); } } /* 定義一個學生類: 成員變量:name,age 成員方法:show()方法 我們在使用這個案例的過程中,發現了一個問題: 通過對象去給成員變量賦值,可以賦值一些非法的數據。 這是不合理的。 應該是這個樣子的:在賦值之前,先對數據進行判斷。 判斷到底在哪里做比較合適呢? StudentDemo類是一個測試類,測試類一般只創建對象,調用方法。 所以,這個判斷應該定義在Student類中。 而我們在成員變量的位置可不可以進行數據判斷呢? 是不可以的,因為做數據校驗,必須要依靠一些邏輯語句。 邏輯語句是應該定義在方法中的,所以,我們最終決定在Student類中提供一個方法 來對數據進行校驗。 按照我們前面的分析,我們給出了一個方法進行校驗。 但是呢,它偏偏不調用方法來賦值,還是直接賦值了, 這樣我們的方法就沒有起到作用。 我就應該要求你必須使用我的方法,而不能直接調用成員變量賦值。 怎么去強制要求不能直接使用成員變量呢? 針對這種情況,Java就提供了一個關鍵字 private private:私有的。可以修飾成員變量和成員方法。 注意:被private修飾的成員只能在本類中訪問。 其實我講到現在講解的是一個封裝的思想。 封裝:是指隱藏對象的屬性和實現細節,僅對外提供公共訪問方式。 */ class Student { //姓名 String name; //年齡 private int age; //寫一個方法對數據進行校驗 /* 返回值類型:void 參數列表:int a */ public void setAge(int a) { if(a < 0 || age > 120) { System.out.println("你給的年齡有問題"); }else { age = a; } } //show()方法,顯示所有成員變量值 public void show() { System.out.println("姓名:"+name); System.out.println("年齡:"+age); } } class StudentDemo { public static void main(String[] args) { //創建學生對象 Student s = new Student(); s.show(); System.out.println("--------------"); //給成員變量賦值 s.name = "林青霞"; //s.age = 27; s.setAge(27); s.show(); System.out.println("--------------"); //給age賦值 //s.age = -27; //這個數據是不合理的 //通過方法給值 s.setAge(-27); s.show(); System.out.println("--------------"); } } /* 封裝和private的應用: A:把成員變量用private修飾 B:提高對應的getXxx()和setXxx()方法 */ //定義學生類 class Student { //姓名 private String name; //年齡 private int age; //姓名獲取值 public String getName() { return name; } //姓名設置值 public void setName(String n) { name = n; } //年齡獲取值 public int getAge() { return age; } //年齡賦值 public void setAge(int a) { age = a; } } //測試類 class StudentTest { public static void main(String[] args) { //創建學生對象 Student s = new Student(); //使用成員變量 //錯誤:被私有修飾了,外界不能直接訪問了 //System.out.println(s.name+"---"+s.age); System.out.println(s.getName()+"---"+s.getAge()); //給成員變量賦值 //s.name = "林青霞"; //s.age = 27; //通過方法給賦值 s.setName("林青霞"); s.setAge(27); System.out.println(s.getName()+"---"+s.getAge()); } }
|
|
來自: 潘仕城 > 《封裝和private關鍵字》