RUBY 中父类怎么调用子类的方法?
RT。。。都是子继承父
怎么父调用子啊?
我记得似乎是有方法的,求教。。 原来ruby还有这么NB的使用方法... 完全没注意到。 是不是指“接口”这样的做法?子类中的方法要事先在父类中先声明一下。
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代替,反正是意思都一样。 哦哦 大同小异,能看的大概懂
先研究研究,谢谢 似乎父类不用定义一个def aaa而子类定义了。。。父类能够调用子类的这个方法。。。MS是。。。记不清楚了。。。我研究研究
我也是看RM里的。。Class Game_Event < Game_Character
结果event中的方法def check_XXXXXXX_touch(x,y)中间的XXX忘记了 Character中没有定义。。。。
结果能调用。。。就在父类中 如果只是要子类定义好方法,父类不用定义就能用,这点D就办不到了。
我觉得ruby也不应该能这样用子类的方法,因为父类不可知道自己有几个子类。
你再查查看,check_xxxxxxx_touch(x,y)这个方法,在Character的父类,父类的父类,父类的父类的父类......里有没有? 我诧异的就在于我全局搜索这个方法,只有在子类中定义过……而且Character没定义父类啊 灵异了,还好我没在玩rm。不 用头疼了。 你们……那个,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…… 不要拿静态类型编程语言里的面向对象去套Ruby那样的动态类型的……
页:
[1]
2