物件導向(封裝)get set的由來

來源:互聯網
上載者:User

標籤:

封裝:是指隱藏對象的屬性和實現細節,進對外提供公用訪問方式

好處:將變化隔離。便於使用,提高重用性,提高安全性

封裝原則:將不需要對外提供的額內容隱藏起來,把屬性都隱藏,提供公用方法對其訪問

 1 package com_package2; 2  3     class Age { 4     int age; 5    /*/ public void Haha(int t) 6     //{   if(t>=0) 7    //     age=t; 8        else 9         age=0;10     }11    // public int  getHaha(int t)12   //  {13    //     return t;14         15    // }**/16     void speak()17     {18         System.out.println("age="+age);19         20     }21 22 }

首先注意觀察:Age類中的屬性age沒有說公有,也沒有說私人,再加上這個類也沒說是私人和公有,那麼這個屬性是不受保護的,建立對象後,age是可以被改動也可以被訪問的

但是如果age屬性變成了private那麼AgeDemo是無法訪問到age屬性的

 1 package com_package2; 2  3 public class AgeDemo { 4     public static void main(String[]args) 5     { 6         Age a = new Age();//建立對象 7         //a.Haha(20); 8         a.age=20;//訪問Age類中的年齡屬性 9         a.speak();//訪問Age類中的speak方法10         11     }12 13 }

這裡的age是不被保護的

 

 

再來看,要是想要訪問private屬性,那麼,可以在中間加一個給屬性賦值的public方法如下:

 1 package com_package2; 2  3     class Age { 4     private int age; 5    public void Haha(int t) 6    {   age=t; 7     } 8    // public int  getHaha(int t) 9   //  {10    //     return t;11         12    // }13     void speak()14     {15         System.out.println("age="+age);16         17     }18 19 }

在這裡面,age是私人的其他類無法訪問,但是加了一個public方法來對age屬性進行賦值

 1 package com_package2; 2  3 public class AgeDemo { 4     public static void main(String[]args) 5     { 6         Age a = new Age(); 7         //a.Haha(20); 8         a.Haha(20); 9         a.speak();10         11     }12 13 }

通過Haha對age進行訪問得到age=20

 

在此基礎上可以增加一點演算法:

 1 package com_package2; 2  3     class Age { 4     private int age; 5    public void Haha(int t) 6    {  if(t>=0&&t<=130) 7        age=t; 8       else 9        age=-1;10     }11    // public int  getHaha(int t)12   //  {13    //     return t;14         15    // }16     void speak()17     {18         System.out.println("age="+age);19         20     }21 22 }

 

 1 package com_package2; 2  3 public class AgeDemo { 4     public static void main(String[]args) 5     { 6         Age a = new Age(); 7         //a.Haha(20); 8         a.Haha(-20); 9         a.speak();10         11     }12 13 }

這樣就可以判斷年齡的可能性  得-1

 

由此演變成get set方法:

 1 package com_package2; 2  3     class Age { 4     private int age; 5    public void setAge(int t) 6    {  if(t>=0&&t<=130) 7        age=t; 8       else 9        age=-1;10     }11     public int  getAge(int t)12     {13         return t;14         15     }16     void speak()17     {18         System.out.println("age="+age);19         20     }21 22 }
 1 package com_package2; 2  3 public class AgeDemo { 4     public static void main(String[]args) 5     { 6         Age a = new Age(); 7         //a.Haha(20); 8         a.setAge(-20); 9         a.speak();10         11     }12 13 }

 

這樣的演變就足以說明set,get方法的由來。通常情況下,會將類中的成員變數私人化,為了避免屬性直接被訪問導致資料錯誤,並對外界聽了公用的訪問方式,對該

屬性進行訪問,這樣做的好處是:可以對屬性進行可控,而對屬性訪問的公用方法名稱規範定義的格式是:set屬性(),get屬性()。當然get(),set()都可以在系統中手動產生。

關於這兩個方法:Java中的私人屬性set()是給屬性賦值的,get()是取得屬性值的
被設定和存取的屬性一般是私人
主要是起到封裝的作用,不允許直接對屬性操作
set()和get()不一定同時存在,看程式需求

物件導向(封裝)get set的由來

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.