查看: 2486|回复: 6

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

[复制链接]
梦石
0
星屑
50
在线时间
37 小时
注册时间
2015-2-13
回帖
110
发表于 2015-2-22 19:01:57 | 显示全部楼层 |阅读模式

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

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

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

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-2-22 19:07:13 | 显示全部楼层
简单来说,就是类的公有方法(public methods)

点评

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

使用道具 举报

梦石
0
星屑
34462
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 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 各类型脚本/插件定制
回复

使用道具 举报

梦石
0
星屑
50
在线时间
37 小时
注册时间
2015-2-13
回帖
110
 楼主| 发表于 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 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 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的普通方法,需要再糅合了模块的类中进行调用。
例:
[pre lang="CSharp"]class A : IComparable
{
    public int X{get;set;}
    public int CompareTo(object obj)
    {
        A a = (A)obj;
        if( this.X > a.X) return 1;
        if( this.X == a.X) return 0;
        if( this.X < a.X) return -1;
    }
}[/pre]
简单写了个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 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
37 小时
注册时间
2015-2-13
回帖
110
 楼主| 发表于 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
回复

使用道具 举报

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

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部