secondsen 发表于 2009-7-8 09:32:47

RUBY 中父类怎么调用子类的方法?

RT。。。

都是子继承父
怎么父调用子啊?

我记得似乎是有方法的,求教。。

shawind 发表于 2009-7-8 12:52:47

原来ruby还有这么NB的使用方法... 完全没注意到。

shawind 发表于 2009-7-8 13:06:40

是不是指“接口”这样的做法?子类中的方法要事先在父类中先声明一下。

import tango.util.log.Trace;

class Person
{
    void say(){};
}

class Man : Person
{
    void say()
    {
        Trace.formatln("男");
    }
}

class Woman : Person
{
    void say()
    {
        Trace.formatln("女");
    }
}

void main()
{
    Person a;
    a = new Man;
    a.say();
    a = new Woman;
    a.say();
}

ps:目前没装ruby,拿d代替,反正是意思都一样。

secondsen 发表于 2009-7-8 18:41:23

哦哦   大同小异,能看的大概懂

先研究研究,谢谢

secondsen 发表于 2009-7-8 19:08:54

似乎父类不用定义一个def aaa而子类定义了。。。父类能够调用子类的这个方法。。。MS是。。。记不清楚了。。。我研究研究

我也是看RM里的。。Class Game_Event < Game_Character

结果event中的方法def check_XXXXXXX_touch(x,y)中间的XXX忘记了   Character中没有定义。。。。

结果能调用。。。就在父类中

shawind 发表于 2009-7-8 20:48:40

如果只是要子类定义好方法,父类不用定义就能用,这点D就办不到了。

我觉得ruby也不应该能这样用子类的方法,因为父类不可知道自己有几个子类。

你再查查看,check_xxxxxxx_touch(x,y)这个方法,在Character的父类,父类的父类,父类的父类的父类......里有没有?

secondsen 发表于 2009-7-8 22:28:13

我诧异的就在于我全局搜索这个方法,只有在子类中定义过……而且Character没定义父类啊

shawind 发表于 2009-7-9 08:42:45

灵异了,还好我没在玩rm。不 用头疼了。

rednaxela 发表于 2009-7-19 23:25:51

你们……那个,Ruby里调用方法的时候不会在意被调用对象是什么“类”的啦,只要有合适的方法定义或继承/mix-in了匹配的方法就OK。

像这样:
class A
def foo
    bar
end
end

class B < A
def bar
    puts 'B#bar'
end
end

obj = B.new
obj.foo
这跟下面的代码其实没啥原理上的区别……
def foo(obj)
obj.bar
end

class B
def bar
    puts 'B#bar'
end
end

obj = B.new
foo obj

这就是Ruby的所谓duck typing……

rednaxela 发表于 2009-7-19 23:26:51

不要拿静态类型编程语言里的面向对象去套Ruby那样的动态类型的……
页: [1] 2
查看完整版本: RUBY 中父类怎么调用子类的方法?