设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2134|回复: 6
打印 上一主题 下一主题

[已经过期] 接口是什么啊

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2015-2-13
帖子
126
跳转到指定楼层
1
发表于 2015-2-22 19:01:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
如题!@恐惧剑刃 @芯☆淡茹水 @RyanBern  

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2015-2-22 19:07:13 | 只看该作者
简单来说,就是类的公有方法(public methods)

点评

模块方法也是其单例类的公有方法(好像扯远了  发表于 2015-2-22 19:11
模组吗?  发表于 2015-2-22 19:10
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33435
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

3
发表于 2015-2-22 19:09:14 | 只看该作者
LZ的问题太广泛。

点评

看这里:http://rm.66rpg.com/forum.php?mod=viewthread&tid=376832&page=2#pid2588119 通用化  发表于 2015-2-22 19:13
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2015-2-13
帖子
126
4
 楼主| 发表于 2015-2-22 19:33:29 | 只看该作者
  1. module EquivalentSystem

  2.   DEFAULT_MAX_GOLD = 1000

  3.   def self.call(max_gold = DEFAULT_MAX_GOLD)
  4.     gold_paid = [$game_party.gold, max_gold].min
  5.     $game_party.lose_gold(gold_paid)
  6.     yield gold_paid
  7.   end

  8.   def self.add_hp
  9.     actor = $game_party.actors.first#队伍的第一个人
  10.     call(actor.maxhp - actor.hp) { |v| actor.hp += v } if actor
  11.   end

  12.   def self.add_int
  13.     actor = $game_party.actors.first
  14.     call(actor.maxsp - actor.int){ |v| actor.int += v } if actor
  15. end
复制代码
这个代码如何调用
@芯☆淡茹水 @恐惧剑刃 @RyanBern

点评

下面那个是魔力,我也不太清楚  发表于 2015-2-22 21:37
加血 EquivalentSystem.add_hp ;下面那个不知道啥玩意儿,SP跟魔力混在一堆了。  发表于 2015-2-22 21:26

评分

参与人数 1星屑 +66 收起 理由
hys111111 + 66 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

5
发表于 2015-2-22 21:08:35 | 只看该作者
引用wikipedia里面对Java语言接口的说明。
接口(英语:Interface),在JAVA编程语言中是一个抽象类型(Abstract Type),它被用来要求类(Class)必须实现指定的方法,使不同类的对象可以利用相同的界面进行沟通。接口通常以interface来声明,它仅能包含方法签名(Method Signature)以及常数声明(变量声明包含了 static 及 final),一个接口不会包含方法的实现(仅有定义)。

通俗来讲,接口是一组公共方法和常量的集合(Java),这些方法有相同的函数签名,但是内容却不相同。在面向对象语言中,有时我们不关心一个对象究竟是哪个类的,而关心一个对象到底实现了什么功能。这种情况下就要用到接口。
接口实际上是一种约定。

这句话引用自我的C#老师,接口确实是一种约定,它约定了对象应该有的行为。一旦一个类继承了某个接口,就必须把接口当中的约定实现出来。
接口对于程序的开发和维护都是有很大好处的。
在Ruby中,你可以在module里面找到接口的影子。module里面可以定义一些模块方法和普通方法。一旦一个模块被糅合到类中,这个类就“继承”了模块的方法。
定义成def self.xxx的模块方法,使用的时候就可以用 模块名.xxx 调用。
定义成def xxx的普通方法,需要再糅合了模块的类中进行调用。
例:
CSHARP 代码复制
  1. class A : IComparable
  2. {
  3.     public int X{get;set;}
  4.     public int CompareTo(object obj)
  5.     {
  6.         A a = (A)obj;
  7.         if( this.X > a.X) return 1;
  8.         if( this.X == a.X) return 0;
  9.         if( this.X < a.X) return -1;
  10.     }
  11. }

简单写了个C#的接口范例不知道有没有错误。
定义成这样是因为C#里List#Sort方法服务的,该方法需要对象实现了IComparable,即需要对象是“可比较的”。
在Ruby中,类似的,通过定义'<=>'方法,可以实现不同类对象默认的比较大小方法,应用于不带块的Array#sort方法。

点评

你應該把IComparable的那個方法再打出來, 這樣樓主會比較好懂一點, 因為他不知道IComparable有CompareTo這個方法=v=  发表于 2015-2-23 10:09
看着觉得好简单,但其实大部分好像不懂!  发表于 2015-2-22 21:39
LZ问的是“如何调用模块方法”,咱们扯到interface上了  发表于 2015-2-22 21:36
本来只是表示“一个方法应该如何调用”的意思,没想到楼主还来问……  发表于 2015-2-22 21:34
其实我本来的意思就是“公有方法”而已- -  发表于 2015-2-22 21:32

评分

参与人数 1星屑 +66 收起 理由
hys111111 + 66 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2015-2-13
帖子
126
6
 楼主| 发表于 2015-2-22 21:45:44 | 只看该作者
本帖最后由 布冷.逆天 于 2015-2-22 21:52 编辑

dll文件,动态链接库怎么做啊!有什么用呢!能不能储存脚本!能不能读取dll文件!@芯☆淡茹水 @RyanBern @taroxd

点评

可以。用 Win32API 类  发表于 2015-2-23 09:50
我可以用编程做dll文件,可是不知道RM能不能读取它  发表于 2015-2-23 09:14
都不知道有什么用,要做它干什么?  发表于 2015-2-23 08:25
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
704 小时
注册时间
2011-12-27
帖子
941
7
发表于 2015-2-23 10:07:44 | 只看该作者
接口有很多個解釋啊...
硬件上, 接口就是port或稱為埠, 用來連接外部的硬件設備.
軟件上, 接口可指api, 說的是一個庫或是框架的公用方法, 即是類似rgss提供的類的方法就是接口.
或是, 在部分語言上, 接口是指一個虛擬方法, 如樓上所說, java的abstract class或是interface就能夠有一些虛構方法
c++的virtual方法也是類似的東西.

评分

参与人数 1星屑 +66 收起 理由
hys111111 + 66 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-15 12:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表