主页
论坛
新帖
最新消息
新帖
最新动态
制作互助群
登录
注册
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个字母?
回复帖子
最新帖子
全
我想切换视角讲述故事
最新更新:全民制作人
星期三,21:43
开发问题
Z
将GBA打包成APK
最新更新:zheyeyeye
星期三,21:27
GBA教程
Z
【进站必读】宝可饭堂社区全局规定v1.10
最新更新:z1652646304
星期三,20:25
公告规定
雨
pokeemerald怎么改箱子数
最新更新:雨落天晴
星期二,10:16
开发问题
[讨论]什么契机导致你想做游戏的
最新更新:A原翼
星期一,00:12
其他相关讨论
论坛统计
主题
559
消息
2,422
成员
3,879
最新成员
stonezz
联系我们
QQ
2201858342
邮箱
pokefans@qq.com
论坛
独立开发
进阶教程
Ruby中的类和多态
顶部