作者Peruheru (还在想)
看板C_Sharp
标题Re: [问题] 程式设计观念
时间Fri Jul 17 09:18:38 2015
※ 引述《firebow (台中苏志燮)》之铭言:
: 小弟程式新手
: 今天在youtube看到c#英文教学
: 看到他写了一个介面A
: 里面有宣告属性
: 然後类别B继承(? 介面A
: 里面有私有栏位
: 透过继承介面A的属性来访问私有栏位
: 请问这样跟类别B不继承介面A
: 自己宣告两个属性访问私有栏位
: 两个差别在哪?
: 谢谢!
印象中
介面的用处是让继承他的人外表看起来都会差不多
这样之後只要使用介面来宣告变数,就可以动态决定要使用哪一个实作的内容
如果你类别B之後都只会直接使用类别B来宣告他
那介面的作用就只是限制他的外型而已,就像你说得没有作用
但如果还有另外一个实作介面A的类别C存在
之後如果宣告介面A的变数甲
甲就可以接受类别C或类别B的宣告,并且使用其共用方法
假设我设定一个介面叫做 飞行物
飞行物有三个行为,起飞、飞行、降落
有两个属性,飞行速度与燃料
类别B是飞机,继承飞行物介面
他得要实作飞行物的三个行为,使用飞机的方式来达成起飞、飞行与降落
起飞是开启引擎并滑行升空,飞行是持续燃烧燃料并控制方向舵
降落是瞄准跑道降低高度伸出机轮并使用逆向喷射
飞行速度达到0.84马赫,飞行燃料是汽油
类别C是老鹰,继承飞行物介面
使用老鹰的方式实作三个飞行物行为
起飞是用力拍动翅膀,可能配合踢树枝起飞
飞行是配合气流摆动翅膀飞行,大多时候是在滑翔
降落是瞄准树枝,伸出脚爪抓住树枝并收起翅膀
飞行速度达150公里,飞行燃料是兔子,老鼠或小型鸟类
只要宣告飞行物介面,就可以之後再动态决定要飞的是飞机还是老鹰
反正都一样给燃料後叫他们起飞,飞行一段时间後降落,只是速度有差
如果你从头到尾只有要作飞机一种类别
那你不使用介面的确是没差,反正你自己决定好起飞飞行降落方式之类的就好
这是我的理解啦,不知道有没有错
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.134.18.8
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1437095920.A.9DB.html
※ 编辑: Peruheru (220.134.18.8), 07/17/2015 09:23:55
1F:推 firebow: 原来如此~~谢谢你!! 07/18 00:07
2F:→ kevintsengtw: 介面→共同的行为 07/18 08:17
3F:推 YahooTaiwan: 最近深深体会到,要写大型程式,介面一定要切够细, 07/18 17:27
4F:→ YahooTaiwan: 越细越好 07/18 17:27
5F:推 YahooTaiwan: 就本文来说,除了飞行物介面以外,甚至可以切出 1. 07/18 17:29
6F:→ YahooTaiwan: 可起飞的 2. 可飞行的 3. 可降落的 07/18 17:29