主页
论坛
新帖
最新消息
新帖
最新动态
制作互助群
登录
注册
Toggle sidebar
Toggle sidebar
菜单
安装应用
安装
回复主题
【进站必读】宝可饭堂社区全局规定v1.10
关于坚决维护同人创作社群秩序与共识的公告
论坛
独立开发
进阶教程
Ruby中的类和多态
禁用JavaScript。为了获得更好的体验,请在运行之前启用浏览器中的JavaScript。
您正在使用一款已经过时的浏览器!部分功能不能正常使用。
请尝试升级或使用
其他浏览器
。
信息
<blockquote data-quote="小语咒?" data-source="post: 2298" data-attributes="member: 123"><p><h4>最近在学习国外大佬的Ruby教程,我总结了一下知识点,方便小伙伴们复习。</h4><h4></h4><h4>类的继承</h4><p>类可以有祖先,就像家谱一样。例如,String 类的祖先链是:</p><p></p><p>Kernel -> Object -> Comparable -> String</p><p></p><p>Fixnum 类的祖先链是:</p><p></p><p>Kernel -> Object -> Comparable -> Numeric -> Precision -> Integer -> Fixnum</p><p></p><h4>方法查找</h4><p>当你在一个对象上调用方法时,会从该对象所属的类开始查找,如果找不到,会依次向上查找其祖先类,直到找到方法或引发 NoMethodError 错误。</p><p></p><h4>is_a? 方法</h4><p>is_a? 方法可以检查对象是否属于某个类或其祖先类。例如:</p><p></p><p>14.is_a?(Numeric) #=> true</p><p>14.is_a?(Object) #=> true</p><p>14.is_a?(String) #=> false</p><p></p><h4>创建自定义类</h4><p>你可以创建自己的类:</p><p></p><p>class CustomClass</p><p>end</p><p></p><p>创建类的实例:</p><p></p><p>var = CustomClass.new</p><p></p><p>添加实例方法:</p><p></p><p>class CustomClass</p><p> def say_hello</p><p> print "Hello!"</p><p> end</p><p>end</p><p></p><p>var.say_hello # 打印 "Hello!"</p><p></p><h4>类方法</h4><p>类方法是定义在类本身上的方法,而不是实例上的方法:</p><p></p><p>class CustomClass</p><p> def self.say_hello</p><p> print "Hello!"</p><p> end</p><p>end</p><p></p><p>CustomClass.say_hello # 打印 "Hello!"</p><p></p><h4>构造函数</h4><p>构造函数 initialize 在创建对象时被调用:</p><p></p><p>class CustomClass</p><p> def initialize</p><p> p "This object was just created!"</p><p> end</p><p>end</p><p></p><p>var = CustomClass.new # 打印 "This object was just created!"</p><p></p><p>构造函数可以接受参数:</p><p></p><p>class CustomClass</p><p> def initialize(string)</p><p> print string</p><p> end</p><p>end</p><p></p><p>var = CustomClass.new("Hello!") # 打印 "Hello!"</p><p></p><h4>添加和覆盖方法</h4><p>你可以随时向类添加或覆盖方法:</p><p></p><p>class CustomClass</p><p> def say_hello</p><p> print "Hello!"</p><p> end</p><p>end</p><p></p><p>CustomClass.new.say_hello # 打印 "Hello!"</p><p></p><p>class CustomClass</p><p> def say_hello</p><p> print "Hi!"</p><p> end</p><p>end</p><p></p><p>CustomClass.new.say_hello # 打印 "Hi!"</p><p></p><h4>继承</h4><p>新类默认继承自 Object。你可以通过 < 指定继承其他类:</p><p></p><p>class One</p><p> def say_hello</p><p> print "Hello!"</p><p> end</p><p>end</p><p></p><p>class Two < One</p><p>end</p><p></p><p>Two.new.say_hello # 打印 "Hello!"</p><p></p><h4>super 关键字</h4><p>super 关键字用于调用超类中的同名方法:</p><p></p><p>class One</p><p> def hi</p><p> p "Hi!"</p><p> end</p><p>end</p><p></p><p>class Two < One</p><p> def hi</p><p> p "Hello!"</p><p> super</p><p> end</p><p>end</p><p></p><p>Two.new.hi # 打印 "Hello!" 然后打印 "Hi!"</p></blockquote><p></p>
[QUOTE="小语咒?, post: 2298, member: 123"] [HEADING=3]最近在学习国外大佬的Ruby教程,我总结了一下知识点,方便小伙伴们复习。[/HEADING] [HEADING=3][/HEADING] [HEADING=3]类的继承[/HEADING] 类可以有祖先,就像家谱一样。例如,String 类的祖先链是: Kernel -> Object -> Comparable -> String Fixnum 类的祖先链是: Kernel -> Object -> Comparable -> Numeric -> Precision -> Integer -> Fixnum [HEADING=3]方法查找[/HEADING] 当你在一个对象上调用方法时,会从该对象所属的类开始查找,如果找不到,会依次向上查找其祖先类,直到找到方法或引发 NoMethodError 错误。 [HEADING=3]is_a? 方法[/HEADING] is_a? 方法可以检查对象是否属于某个类或其祖先类。例如: 14.is_a?(Numeric) #=> true 14.is_a?(Object) #=> true 14.is_a?(String) #=> false [HEADING=3]创建自定义类[/HEADING] 你可以创建自己的类: class CustomClass end 创建类的实例: var = CustomClass.new 添加实例方法: class CustomClass def say_hello print "Hello!" end end var.say_hello # 打印 "Hello!" [HEADING=3]类方法[/HEADING] 类方法是定义在类本身上的方法,而不是实例上的方法: class CustomClass def self.say_hello print "Hello!" end end CustomClass.say_hello # 打印 "Hello!" [HEADING=3]构造函数[/HEADING] 构造函数 initialize 在创建对象时被调用: class CustomClass def initialize p "This object was just created!" end end var = CustomClass.new # 打印 "This object was just created!" 构造函数可以接受参数: class CustomClass def initialize(string) print string end end var = CustomClass.new("Hello!") # 打印 "Hello!" [HEADING=3]添加和覆盖方法[/HEADING] 你可以随时向类添加或覆盖方法: class CustomClass def say_hello print "Hello!" end end CustomClass.new.say_hello # 打印 "Hello!" class CustomClass def say_hello print "Hi!" end end CustomClass.new.say_hello # 打印 "Hi!" [HEADING=3]继承[/HEADING] 新类默认继承自 Object。你可以通过 < 指定继承其他类: class One def say_hello print "Hello!" end end class Two < One end Two.new.say_hello # 打印 "Hello!" [HEADING=3]super 关键字[/HEADING] super 关键字用于调用超类中的同名方法: class One def hi p "Hi!" end end class Two < One def hi p "Hello!" super end end Two.new.hi # 打印 "Hello!" 然后打印 "Hi!" [/QUOTE]
验证
我们通常会将Pokemon Essentials简称为哪3个字母?
回复帖子
最新帖子
图像资源
特别篇赤红HGSS风格主世界
最新更新:幼芙利特
星期一,14:49
开发用品
K
新增了一个天气动画效果,怎么实装到游戏里?
最新更新:kuzo
星期日,20:35
开发问题
夜
✓ ESS20-21
ESS21.1现在有汉化版本吗?
最新更新:夜白雪
2026/09/03
开发问题
夜
我好孤单寂寞冷啊
最新更新:夜白雪
2026/09/03
心情茶坊
夜
1-8代图鉴词条汉化修正
最新更新:夜白雪
2026/09/03
开发用品
论坛统计
主题
574
消息
2,459
成员
4,039
最新成员
GBGXBVVG
联系我们
QQ
2201858342
邮箱
pokefans@qq.com
论坛
独立开发
进阶教程
Ruby中的类和多态
顶部