Project1

标题: [初学语法问题]RGSS中怎么复制另一个类的方法? [打印本页]

作者: xyxw    时间: 2009-5-13 19:28
标题: [初学语法问题]RGSS中怎么复制另一个类的方法?
我想在一个类之下复制并引用另一个类中的方法,但不想写重复代码,请问语句上应该怎样写?

作者: 紫苏    时间: 2009-5-13 19:29
class 你的类 < 你想要复制的类
end

这就是所谓的儿子从老子那儿继承了
作者: xyxw    时间: 2009-5-13 19:32
额,不是整个类的继承,我只要引用其中的一个函数就可以了
作者: 紫苏    时间: 2009-5-13 20:53
……两个没有继承关系的类之间,各自的成员是具有封装性质的,在一个类的非静态上下文中要引用另一个类的非静态方法,可以先建立一个该类的对象,然后通过这个对象来引用该方法~
也可以在想要引用的方法的类中建立一个静态的单例,这样就不需要在非静态上下文中每次都建立对象了

不继承、不建立对象的话,要引用其它类中的方法不太现实,因为非静态的内容在对象建立前是不会执行的,而在静态的上下文中又无法去引用非静态的内容(比如类方法中无法获取类的实例方法),除非你想引用的方法是一个静态的类方法,这样就能直接通过类名来调用

Ruby 中应该也没有类似 C++ 友元的机制……

如果是一个模块中的成员方法,你可以通过 include 来混入一个类中,但这实际上还是让类继承自一个匿名的父类…… [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: xyxw    时间: 2009-5-13 21:07
那如果是静态的方法,应该如何引用呢?

话说,静态方法和非静态方法如何区分?是不是看有没有建立实例?
作者: 沉影不器    时间: 2009-5-13 21:08
提示: 作者被禁止或删除 内容自动屏蔽
作者: xyxw    时间: 2009-5-13 21:19
谢谢两位!我弄明白了~
作者: 紫苏    时间: 2009-5-13 21:23
同沉影说的,Ruby 的类本身也是一个 Class 对象,这个类就是典型的单例类,当用 class Name..end 建立了一个类之后就会把这个对象保存到类名的全局常量中~
Class 类里面保存的就是关于类的一些静态信息

至于区分,你看方法声明的地方就知道了,非静态的方法直接 def methodName,静态的方法则是:def self.methodName 或者 def 类名.methodName
作者: 后知后觉    时间: 2009-5-13 21:35
其实最简单的方法是ctrl+c 然后ctrl+v  -v-




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1