Project1

标题: 子类中定义父类已有函数会影响到父类吗? [打印本页]

作者: 黑白界    时间: 2015-2-13 15:58
标题: 子类中定义父类已有函数会影响到父类吗?
还是只在子类中生效
作者: 喵呜喵5    时间: 2015-2-13 16:05
本帖最后由 喵呜喵5 于 2015-2-13 16:40 编辑

正常情况下不会…………

非正常情况下我也不知道

欢迎楼下举一些非正常情况让我涨姿势……


======================================================

非正常人类研究中心

======================================================

RUBY 代码复制
  1. class A
  2.   def self.hello; p 'hello'; end  
  3. end
  4. class B < A
  5.   def self.hello(t)
  6.     self.superclass.class_eval %Q~define_singleton_method :hello do p "#{t}" end~
  7.   end
  8. end
  9. A.hello
  10. B.hello('world')
  11. A.hello

RUBY 代码复制
  1. class A
  2.   @@a = 1
  3.   def self.hello; p @@a; end
  4. end
  5. class B < A
  6.   def self.hello; @@a += 1; p @@a; end
  7. end
  8. A.hello
  9. B.hello
  10. A.hello

作者: taroxd    时间: 2015-2-13 16:18
喵呜喵5 发表于 2015-2-13 16:05
正常情况下不会…………

非正常情况下我也不知道

非正常情况参上

RUBY 代码复制
  1. class C
  2.   counter = Hash.new(0)
  3.   define_singleton_method :method_added do |sym|
  4.     return if equal?(C)
  5.     value = counter[sym] += 1
  6.     C.send(:define_method, sym){value}
  7.   end
  8. end
  9.  
  10. class CC < C
  11.   def a
  12.   end
  13. end
  14.  
  15. p C.new.a # 1
  16.  
  17. class CCC < C
  18.   def a
  19.   end
  20. end
  21.  
  22. p C.new.a # 2





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