Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
查看: 1751|回复: 15
打印 上一主题 下一主题

interface的不解

[复制链接]

5

主题

0

好友

59

积分

中级会员

Rank: 2Rank: 2

跳转到指定楼层
1#
发表于 2010-6-23 02:43 PM |只看该作者 |正序浏览
我好像在这里看过关于interface的讨论,但现在却找不到那帖了。
对于这interface我还是一知半解,可能一半都没有。
看过了好多关于interface的解释,但都不能领悟到关键要怎么用和在什么情况适合用interface。
每次看到的都放在class里,并只是用于普通的set 和get。
那位大哥可以解释吗?
十分,非常,真心的感谢!




收藏收藏0

31

主题

0

好友

1228

积分

黄金长老

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

16#
发表于 2010-6-24 07:50 PM |只看该作者
interface 本身是没有功能的,
他可以算是一个架构, 或是用来标记 (例如 implements Serialization).

与其在这边说那么多理论, 最好的了解方法还是自己去 code 一番.


回复

使用道具 举报

5

主题

0

好友

59

积分

中级会员

Rank: 2Rank: 2

15#
发表于 2010-6-24 03:56 PM |只看该作者
本帖最后由 my_world 于 2010-6-24 04:00 PM 编辑

回复 14# ~Zero


    如果说多一个class叫 "Assasin",也是implement - ISummon.
    那照这么说

  我declare了1个magician - Magic1;
    和1个Assasin - Assasin1;
    所以Magic1的可以用到Assasin1的summon咯~
    可以这么说吗?


回复

使用道具 举报

31

主题

0

好友

1228

积分

黄金长老

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

14#
发表于 2010-6-24 12:04 PM |只看该作者
差不多对了, 但又有一点不对.
其实只要参考 wikipedia, 那边有另外一种例子, 也不是很难了解的.

其中一个 interface 很大的好处, 就是通过 interface, 可以作出 multiple inheritance 的功能.
一个 coding 技巧, 不一定只有一种用途的.

我看看上面那个 abstract class, 然后 override, 然后用个别的 skill (summon, heal) 来 interface, 有点太滥用 interface 了. 不过如果 code 得出来, 也是可行的. 只是可能会比较难 maintain.

interface 对我来说, 好处就是. 只要我确保全部都有 implement 同一个 interface,
我在当中要用到的时候, 可以不需要管那个是什么 class.

例如, 系统里面, 我不需要
if A is warrior, A.cut.
else if A is archer, A.shoot.
else if A is magician, A.cast

我可以直接 A.Attack.


回复

使用道具 举报

5

主题

0

好友

59

积分

中级会员

Rank: 2Rank: 2

13#
发表于 2010-6-24 10:55 AM |只看该作者
回复 7# 宅男-兜着走


    好棒的解释!!!
  
  我想问的是,

  1 )如果worrior和archer有另一个特别招式"Heal",那我就再增加一个IHeal的interface。可以这样说吗?

  2 )如果在这里只有magician有用到summon,其他的都不会用到的话,就不需再用Isummon的interface了,对吗?
     我就直接在magician里defined summon的method就行了。可以这样说吗?


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

12#
发表于 2010-6-24 06:30 AM |只看该作者
回复 11# goodday

之前做过的 Flash Game 功课算吗?

我没这个本事啦。

反而OO的原理要应用在现实上真的很难。


Final Year , Final Year 越做越火大(抱怨)。


回复

使用道具 举报

13

主题

0

好友

2113

积分

白金长老

Rank: 10

11#
发表于 2010-6-24 02:18 AM |只看该作者
你可以做game 咯
几时开发一个??


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

10#
发表于 2010-6-24 12:43 AM |只看该作者
本帖最后由 宅男-兜着走 于 2010-6-24 12:45 AM 编辑

回复 8# goodday


    因为我考虑到

魔法师, 因为是 Cast 魔法的, 所以攻击力可能低, Agility 可能会影响到 Run 的成功率, 或速度。 所以我 让每个 Character 有相同的 基本动作, 但是不同的效果。

Interface Summon 方面 我想到, 可能只有 Summoner 有 召唤的法术。 可是因为我考虑到魔法师可能也有。
所以就做成了 Interface 来 让法师们 Implements ==

说是简单啦。 但是实际应用起来的话。==

Class Character 的话 里面是基本动作。 我想到的是如此, 不管是 Orc 还是 Elf, 应该都会 打人, 逃跑, 防卫 ==

补充 : 确实是 工人 不具攻击的角色, 可以设置成 Attack 0 或 1 等低值。


回复

使用道具 举报

13

主题

0

好友

2113

积分

白金长老

Rank: 10

9#
发表于 2010-6-24 12:22 AM |只看该作者
class Character

{

....

abstract void Run();



abstract void Attack();



abstract void Defence();



}

是基本动作咯 


回复

使用道具 举报

13

主题

0

好友

2113

积分

白金长老

Rank: 10

8#
发表于 2010-6-24 12:21 AM |只看该作者
宅男-兜着走
你的对了 呵呵 
但要自己下手 写了才能 领悟 他的用法
文字很难懂

你override的意思 是 每个的Character 的defence , run , attack 都各有长短
骑士 的 run 最快(最大值) 
魔法师的 run 是慢的??


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2024-10-30 11:25 AM , Processed in 0.119953 second(s), 29 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部