- 介紹
- 用Java getter和setter是什麼?
- 一個簡單的Getter和Setter代碼
- 我們為什麼使用Getter和Setter方法?
- 如果我們沒有一個Getter和Setter方法在Java中?
介紹
在大多數的類,一個規則有其產權是私有財產。我們都知道對象類表示,我們一直想要的屬性對象以固定格式。然而,我們已經知道,訪問私有屬性或變量隻能在同一類。我們可以讀和寫訪問對象的私有屬性通過特殊的類方法調用getter和setter。在這條規則我們提供公共獲取和設置方法。的幫助下getter方法我們可以讀取變量的值或讓我們說我們檢索值。我們通過使用Setter方法設置或初始化各自的類字段。然而,這些特殊的公共類方法獲取和設置默認方法與類相關聯。但是,我們可以覆蓋這些默認的方法通過定義專門的getter和setter方法。
用Java getter和setter是什麼?
正如已經討論了getter和setter是兩個傳統的特殊類方法在Java用於檢索和更新類的私有屬性或變量。getter和setter大力使用Java編程語言。但是,程序員經常犯錯誤在實施這個特殊的類方法。讀下麵的文章了解Java的getter和setter。
Getter方法
Java的getter方法使我們能夠獲取或獲取變量的數據。它返回私有成員的價值而不改變類類型。這種方法也被稱為訪問器方法的訪問文件的類代表一個對象。我們應該創建getter方法為每一個類的私有財產。我們可以設置一個變量的訪問修飾符的getter方法,根據給過剩的水平
變量。如果我們在類聲明的變量作為私人,我們將不得不為每個成員添加公共getter方法。
getter方法在Java的語法如下:
公共返回類型getPropertyName ()
Setter方法
setter方法在Java中使我們能夠更新或設置一個變量的數據。它的值修改私有成員而不改變類類型。這種方法也被稱為Mutator方法修改或者我們可以說變異代表一個對象類的數量。像getter方法我們應該創建setter方法為每一個類的私有財產。如果我們在類聲明的變量作為私人,我們將不得不為每個成員添加公共setter方法。
Setter方法在Java的語法如下:
公共空間setPropertyName(數據類型屬性值)
一個簡單的Getter和Setter代碼
下麵是一個通用類的私有變量和一定的getter和setter方法。
公共類一般{私人int num; |
公共int getNum(){返回this.num;}公共空setNum (int num) {this.numb = num;}} |
在上麵的代碼是一個類的私有變量num。盡管礦工工會是一個私人類不能訪問外部類。所以我們必須喚起getter, getNum()和setter, setNum()來訪問和修改通用類的私有財產num的值。
我們為什麼使用Getter和Setter方法?
的Getter和Setter方法保護我們的類屬性的外部變化。可能有重要影響的使用不同的手段來訪問私有成員以外的Getter和Setter方法。
除此之外,有一個基本原則叫做封裝在麵向對象編程語言。當財產擔保或隱藏私人訪問修飾符,可以隻通過getter和Setter方法,代碼封裝。此外,哎呀概念是考慮到隱私程序員開發的。因此Getter和Setter保護我們代碼違反了最基本的原則,麵向對象的編程語言,封裝。
如果我們沒有一個Getter和Setter方法在Java中?
假設如果我們沒有一個Getter和setter方法的編程語言。所以,如果我們想要改變我們的類的屬性的值。我們必須公開這些屬性,保護,或違約。然後我們必須使用一個點(.)運營商以外的類。讓我們看看一些這樣做的後果。
●由於我們使用外的屬性或值類,沒有我們使他們的getter和setter方法,保護或違約。這樣我們違反了基本的麵向對象編程的原則即封裝。我們正在失去控製我們的數據。
●采用變量之外的任何人都可以訪問和修改的類。因此我們不能實現不變性。
●條件邏輯不能應用於屬性的變化。假設您正在運行一個企業,你讓工人階級產權組織retirementage:
公共類員工{公共字符串名稱;公共int retirementage;}雖然我們設置這些屬性以外的公眾獲得工人階級。任何人都可以訪問這個類和做他們想做的任何事情retirementage類的成員。我們不能驗證任何方式的變化。公開課retirementage修飾符{私人工人工人=新工人(“沃爾特”,45);私人空間修改retirementage () {workers.retirementage = 25;}} |
還讀:抽象類在JAVA和封裝
常見的錯誤
1)使用Getter和Setter和更少的限製變量
是沒有意義的公共變量使用Getter和Setter方法。它可以很容易地訪問使用一個點(.)操作符。
公共類員工{公共字符串名稱;公共int retirementage;}公共空setName(字符串名稱){this.name =名稱;getName(){}公共字符串返回this.name;} |
2)直接在setter轉讓對象引用
如果我們分配Setter方法的直接對象引用,這兩個引用(從內部和外部代碼)返回一個對象在內存中。所以我們可以提供對象的副本,而不是直接返回引用。通過這個我們可以做的狀態對象獨立於現有的內部。外部代碼現在獲得內部對象的一個副本。
公共空間setWorkers(工人工人){
this.workers =工人;
}
現在馬金所有元素從內部對象的副本
公共空間setWorkers(工人工人){this.workers.setName (workers.getName ());this.workers.setretirementage (workers.getretirementage ());} |
3)返回對象引用直接進入getter
類似地,如果我們直接返回對象引用到getter方法以外的任何人都可以改變國家利用其參考。因此,我們可以提供對象的副本,而不是直接返回引用。見下麵的更改的新代碼:
私人空間modifyAge(){工人workersb = getworkers ();workersb.setretirementage (60);}公務員getworkers () {retrurn新工人(this.workers.getName (), this.workers.getretirementage ());} |
現在給一個簡短的在java getter和setter的優點
如你所知,提供getter和setter方法訪問任何Java類字段可能似乎毫無意義,毫無意義的,因為你可以讓公眾。也可以在Java程序從任何地方。但實際上,很多java程序員做這個隻在早期。一旦你獲得一些經驗
並開始思考的企業應用程序或產品代碼,您可以很容易地認為它可能導致和估算維修麻煩。
根據SDLC過程,我們知道,花更多的時間在維護比開發軟件。
它值得擁有易於維護的發展目標。所以我們更喜歡getter和setter方法的java總是和它是java編碼最佳實踐之一。
有一些優勢的getter和setter公共字段:
1)在Java的幫助下,您可以很容易地使類可訪問與顯示等許多開放源碼庫和模塊標簽通過私人領域和包括getter和setter和遵循javabean的命名約定。它總是使用反射和動態加載和訪問字段的Javabean的命名約定。
2)一個機會我們可以給子類重寫這個方法與getter和setter和返回在子類的背景下更有意義。
3)該方法給出了集中控製的某些字段初始化和提供給客戶端,這使得它更容易驗證和調試。我們可以很容易地放置斷點或print語句看哪個線程訪問和價值觀是什麼。
4)我們允許繼承者改變財產的行為和如何暴露的語義通過重寫這個方法。
類人{/ /私人=限製訪問私人字符串名稱;/ / Getter公共字符串getName(){返回名稱;}/ / Setter公共空setName新名稱(字符串) |
< !——wp:段落——> < p > {, < / p > < !——/ wp:段落- - > < !——wp:段落——> < p > this.name =新名稱;,< / p > < !——/ wp:段落- - > < !——wp:段落——> < p >}, < / p > < !——/ wp:段落- - > < !——wp:段落——> < p >}, < / p > < !——/ wp:段落- - > < !——wp:段落——> < p >類主要{,< / p > < !——/ wp:段落- - > < !——wp:段落——> < p >公共靜態void main (String [] args), < / p > < !——/ wp:段落- - > < !——wp:段落——> < p > {, < / p > < !——/ wp:段落- - > < !——wp:段落——> < p >人人= new ();, < / p > < !——/ wp:段落- - > < !——wp:段落——> < p > / / name變量的值設置為“資源”,< / p > < !——/ wp:段落- - > < !-- wp:paragraph --> person.setName("Manish");
System.out.println(person.getName());
}
}
這段代碼的輸出是:
Manish |
我希望你可能有基本了解java的getter和setter。現在你可以很容易地進行進一步探索更多的領域的Java。