查看: 2090|回复: 2

[已经解决] 子类中定义父类已有函数会影响到父类吗?

[复制链接]
梦石
0
星屑
701
在线时间
511 小时
注册时间
2012-4-8
回帖
193
发表于 2015-2-13 15:58:58 | 显示全部楼层 |阅读模式

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

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

×
还是只在子类中生效
武侠|养成|战棋游戏《以武证道》头秃开发中...
开发日记在此

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-2-13 16:05:38 | 显示全部楼层
本帖最后由 喵呜喵5 于 2015-2-13 16:40 编辑

正常情况下不会…………

非正常情况下我也不知道

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


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

非正常人类研究中心

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

[pre lang="ruby"]class A
  def self.hello; p 'hello'; end  
end
class B < A
  def self.hello(t)
    self.superclass.class_eval %Q~define_singleton_method :hello do p "#{t}" end~
  end
end
A.hello
B.hello('world')
A.hello[/pre]
[pre lang="ruby"]class A
  @@a = 1
  def self.hello; p @@a; end
end
class B < A
  def self.hello; @@a += 1; p @@a; end
end
A.hello
B.hello
A.hello[/pre]

点评

我写了个draw_icon2来解决,不用麻烦你了  发表于 2015-2-13 18:31
请附带出错的范例工程  发表于 2015-2-13 17:42
不是,Window_NewGold < Window_Base,只是在物品栏显示金钱的一个窗口  发表于 2015-2-13 17:31
所有窗口都是该类的实例?  发表于 2015-2-13 17:28
我信了,然后在一个窗口类里重写了draw_icon,结果所有窗口的绘制方式都变了,喂猫啊。。  发表于 2015-2-13 17:20
回复

使用道具 举报

…あたしは天

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

开拓者贵宾

发表于 2015-2-13 16:18:44 | 显示全部楼层
喵呜喵5 发表于 2015-2-13 16:05
正常情况下不会…………

非正常情况下我也不知道

非正常情况参上

[pre lang="ruby"]
class C
  counter = Hash.new(0)
  define_singleton_method :method_added do |sym|
    return if equal?(C)
    value = counter[sym] += 1
    C.send(:define_method, sym){value}
  end
end

class CC < C
  def a
  end
end

p C.new.a # 1

class CCC < C
  def a
  end
end

p C.new.a # 2
[/pre]

评分

参与人数 2星屑 +290 收起 理由
VIPArcher + 150 (σ゚д゚)σ
喵呜喵5 + 140 获得了新姿势【69式】!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部