在面向?qū)ο蟪绦蛟O(shè)計(jì)方法中,封裝(Encapsulation)是指一種將抽象性函式接口的實(shí)現(xiàn)細(xì)節(jié)部分包裝‘隱藏起來(lái)的方法。數(shù)據(jù)被保護(hù)在內(nèi)部,隱藏內(nèi)部實(shí)現(xiàn)細(xì)節(jié),對(duì)外提供接口與外部交互。
使用封裝的步驟
將類(lèi)的所有屬性使用關(guān)鍵字private去修飾,把它們變成私有的,不允許外部類(lèi)直接訪問(wèn)
生成或者提供公共的setter/getter方法去操作這些被隱藏起來(lái)的屬性
在類(lèi)自己的 setter/getter方法中加入邏輯控制,以確保數(shù)據(jù)訪問(wèn)的有效性和安全性實(shí)例
讓我們來(lái)看一個(gè)java封裝類(lèi)的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/* 文件名: EncapTest.java */ public class EncapTest{ private String name; private String idNum; private int age; public int getAge(){ return age; } public String getName(){ return name; } public String getIdNum(){ return idNum; } public void setAge( int newAge){ age = newAge; } public void setName(String newName){ name = newName; } public void setIdNum( String newId){ idNum = newId; } } |
以上實(shí)例中public方法是外部類(lèi)訪問(wèn)該類(lèi)成員變量的入口。
通常情況下,這些方法被稱為getter和setter方法。
因此,任何要訪問(wèn)類(lèi)中私有成員變量的類(lèi)都要通過(guò)這些getter和setter方法。
通過(guò)如下的例子說(shuō)明EncapTest類(lèi)的變量怎樣被訪問(wèn):
1
2
3
4
5
6
7
8
9
10
11
12
|
/* F文件名 : RunEncap.java */ public class RunEncap{ public static void main(String args[]){ EncapTest encap = new EncapTest(); encap.setName( "James" ); encap.setAge( 20 ); encap.setIdNum( "12343ms" ); System.out.print( "Name : " + encap.getName()+ " Age : " + encap.getAge()); } } |
以上代碼編譯運(yùn)行結(jié)果如下:
1
|
Name : James Age : 20 |
使用封裝的好處
1、良好的封裝能夠減少耦合
2、類(lèi)內(nèi)部的結(jié)構(gòu)可以自由修改。
3、可以對(duì)成員進(jìn)行更精確的控制。
4、隱藏信息,實(shí)現(xiàn)細(xì)節(jié)
總結(jié)
以上就是本文關(guān)于java語(yǔ)言中封裝類(lèi)代碼示例的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
原文鏈接:http://blog.csdn.net/jdliyao/article/details/78945933