大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 淺談面向?qū)ο蠓庋b

淺談面向?qū)ο蠓庋b

更新時間:2020-11-11 18:03:29 來源:動力節(jié)點 瀏覽1212次

封裝( Encapsulation) 是面向?qū)ο蟮娜筇卣髦?另外兩個是繼承和多態(tài)) ,從字面意思上看,顧名思義就是將具體的實現(xiàn)細節(jié)裝到一個容器中,并封閉起來,防止容器外部直接訪問容器內(nèi)部的實現(xiàn)細節(jié),僅公開暴露指定的訪問路徑;面向?qū)ο蠓庋b實際上指的是將對象的狀態(tài)信息隱藏在對象內(nèi)部,不允許外部程序直接訪問對象內(nèi)部信息,而是通過該類所提供的方法來實現(xiàn)對內(nèi)部信息的操作和訪問。


一、面向?qū)ο蠓庋b主要是為了實現(xiàn)以下目的:

1.隱藏類的實現(xiàn)細節(jié)

2.讓使用者只能通過事先預定 的方法來訪問數(shù)據(jù),從而可以在該方法里加入控制邏輯,限制對成員變量的不合理訪問

3.可進行數(shù)據(jù)檢查,從而有利于保證對象信息的完整性。

4.便于修改,提高代碼的可維護性


二、面向?qū)ο蟮姆庋b一般封裝為以下幾個幾個類型:


1.封裝成常量/變量:

如:計算圓周長度,未封裝前的代碼如下:

//封裝前:

decimal result = 2 * 3.141592653M * 10.8M;

Console.WriteLine("圓周長度是:{0}", result);

封裝后的代碼如下:

//封裝后:

const decimal PI = 3.141592653M;

decimal radius = 10.8M;

decimal circumference = 2 * PI * radius;

Console.WriteLine("圓周長度是:{0}", circumference);

你覺得哪種可讀性更高一些呢?從我看來,很顯然封裝后的代碼更易被他人所理解,因為圓周長的計算公式就是:C=2πr;從circumference就知道是圓周長的結(jié)果,而等號右邊剛好符合圓周長計算公式,所以非常的直觀,可讀性由此體現(xiàn)出來;


2.封裝成方法/函數(shù)/屬性:

//計算圓周長

static decimal ComputeCircumference(decimal radius)

{

const decimal PI = 3.141592653M;

return 2 * PI * radius;

}

//用法:

Console.WriteLine("圓周長度是:{0}", ComputeCircumference(10.8M));

通過封裝成方法后,我們看到ComputeCircumference方法,就知道是計算圓周長,同時我可以用此方法來計算所有的不同半徑的圓的周長,可讀性、復用性由此體現(xiàn)出來;


3.封裝成類:

///


/// 圓類

///


class Circle

{

//原點X坐標

public int OriginX

{ get; set; }

//原點Y坐標

public int OriginY

{ get; set; }

//半徑

public decimal Radius

{ get; set; }

public Circle(int originX, int originY, decimal radius)

{

this.OriginX = originX;

this.OriginY = OriginY;

this.Radius = radius;

}

///


/// 獲取圓周長度

///


///

public decimal GetCircumference()

{

const decimal PI = 3.141592653M;

return 2 * PI * this.Radius;

}

}

//用法:

Circle circle = new Circle(10,10,10.8M);

Console.WriteLine("圓周長度是:{0}", circle.GetCircumference());

從上述示例代碼可以看出,我定義(封裝)了一個圓類,圓類有原點及半徑,同時有一個獲取圓周長度的方法,該圓類可以用來表示多個不周大小不同位置的圓,而且都能獲得圓的圓周長,至于圓周長是如何計算的,PI的精度是多少,我們無需知道也無法直接更改,故隔離性、可讀性、復用性都體現(xiàn)出來了;


4.封裝成層/包/程序集:

有的時候因系統(tǒng)架構的需要,我們可能需要將描述各種圖形類信息的代碼單獨封裝成一個程序集、包、命名空間,以便于代碼的管理,于是我們可以將上述Circle類放到一個單獨的程序集中,同時程序集及命名空間名稱定為:Math.Shape,意為數(shù)學.圖形,從名字就知道這個程序集或命名空間下都是用來處理數(shù)學與圖形相關的。

示例代碼如下:

namespace Math.Shape

{

public class Circle

{

//省略,同上

}

}

//用法:

Math.Shape.Circle circle = new Math.Shape.Circle(10, 10, 10.8M);

Console.WriteLine("圓周長度是:{0}", circle.GetCircumference());


以上就是對面向?qū)ο蠓庋b的一些淺薄之見,也是看了本站的Java SE教程中關于Java面向?qū)ο蟛糠值闹v解自己總結(jié)出的一些內(nèi)容,希望能夠?qū)Υ蠹覍W習面向?qū)ο舐员M綿薄之力。當然,你也可以直接去觀看本站的Java SE教程,說不定能總結(jié)出更好的面向?qū)ο笾R點。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 九九久久精品国产 | 国产成人精品高清免费 | 国产第二区 | 性做久久久久久久 | 亚洲欧洲在线观看 | 好吊788gaoco| 天天干天天射天天爽 | 在线观看免费毛片 | 有码中文字幕在线观看 | 亚洲精品乱码久久久久久中文字幕 | 另类图片综合 | 久久亚洲国产伦理 | 真实国产乱子伦精品免费 | 国产成人免费网站在线观看 | 91精品推荐 | 久久r这里只有精品 | 亚洲综合激情六月婷婷在线观看 | 免费成人一级片 | 天天综合天天操 | 国产福利精品视频 | 一本色道久久综合狠狠躁 | 久久精选视频 | 欧美成人极品怡红院tv | 欧美性色xo影院69 | 中文字幕视频二区 | 欧美日韩国产一区二区三区 | 中文字幕视频免费 | 91私拍 | 久久嫩草影院免费看夜色 | 精品国产乱码一区二区三区麻豆 | 亚洲偷自拍另类图片二区 | 99热国产这里只有精品99 | 青青青久在线视频免费观看 | 欧美一级毛片免费看高清 | 日本在线观看不卡免费视频 | 亚洲第成色999久久网站 | 黄色影院网站 | 国产在线播放一区 | 国产精品亚洲一区二区三区正片 | 日本高清h色视频在线观看 日本高清不卡二区 | 神马影院伦理我不卡 |