Day 24 Encapsulation

物件导向程序设计有三大特性:封装、继承、多型,今天要来介绍封装。
封装顾名思义就是把属性封在类别里面,不让外界随意存取类别的属性,
意思就是说只有同个类别的方法可以存取被封装的属性。而封装需要用到
Private,Private跟Public的差别如下:
public:所有类都可以存取
private:只能在它自己的类中存取

所以说,封装後的资料会是隐藏的,如果有必要存取,要用getter、setter
getter:返回对象的状态
setter:为对象的状态设置一个值
例如:getX() 和getY() 是getter; setX() 和 setY() 是 setter。
以下有一个范例:将昨天得程序范例用封装来实作

Step1 先把宣告的函数全部private起来
https://ithelp.ithome.com.tw/upload/images/20211006/20140456YMiNv3IsWW.png

Setp2 用getter将每个物件get()起来,并return回原本宣告的物件名称,如下图所示。
https://ithelp.ithome.com.tw/upload/images/20211006/20140456ioeGI7VXjG.png

Step3 用setter将每个物件set(),方法如下。
https://ithelp.ithome.com.tw/upload/images/20211006/201404560bllMc4vYV.png

Step4 将main方法里面要用到封装过的物件用class名称 . set物件名称(),来取得封装过的物件。
https://ithelp.ithome.com.tw/upload/images/20211006/20140456lVXjSr0j5g.png

Step5 area比较特别,因为他要使用到前面的height跟base来乘,所以set完area後,後面要get() area 跟 height,才可以执行乘的动作,如下图所示。
https://ithelp.ithome.com.tw/upload/images/20211006/20140456Y4x8hyzB6z.png

Step6 最後get area 印出来。
https://ithelp.ithome.com.tw/upload/images/20211006/201404563QSsZRPd6o.png

程序执行结果和昨天一样
https://ithelp.ithome.com.tw/upload/images/20211006/201404560dygsH1LYp.png

程序全码如下
https://ithelp.ithome.com.tw/upload/images/20211006/20140456f4O5qO6Sv0.png

https://ithelp.ithome.com.tw/upload/images/20211006/201404562lxEgnTuIu.png


<<:  [DAY22]安装Heroku Postgres插件

>>:  [FGL] 列出树状表所有节点路径的思路与实作

企划实现(6)

甚麽是第三方支付? 第三方支付是指电子商务企业或是具实力及信用保障的独立机构,与银行之间建立一个中立...

子元件向父元件传值与讯息

人类沟通需要技巧,程序语言靠的是方法。 我们除了可以透过 Props 来让父元件传值给子元件外,也...

海棠小姐借我一根头发, 轻轻的拉~拉~拉~ - 盘中 call 讯

写好一些买卖讯号之後,除了可以用回测之外,也可以工人智慧协助查看是否与其策略符合 研究了一下 结合聊...

[ JS个人笔记 ] 闭包Closure—DAY6

简单来说,就是呼叫函式内的函式,将记忆体封存在内层。 像这样,我们把 count 封装在 coun...

[想试试看JavaScript ] 流程控制 if...else

流程控制 if..else if...else 可以办到到的是,「当符合条件,就自动执行程序」,语法...