Ruby 的inherit 和 inherited
众所周知,继承是面向对象语言的重要概念,Ruby作为一门面向对象的编程语言,也提供了继承的功能,本章节我主要讲Ruby是如何继承的。
1. Ruby中如何继承
Ruby通过 子类 < 基/父类 这种形式来实现继承。
实例:
class Person
def name
"My name is Andrew"
end
end
class Member < Person
end
puts Member.new.name
# ---- 输出结果 ----
My name is Andrew
解释 :上面的例子中,类Member
继承了类Person
,所以Member
增加了名为name
的实例方法。
继承不光可以继承实例方法,同样也可以继承类方法。
实例:
class Person
def self.say_hello
"Hello"
end
def name
"My name is Andrew"
end
end
class Member < Person
end
puts Member.say_hello
# ---- 输出结果 ----
Hello
Tips :在Ruby中每个类只能继承一次,不能多重继承。不过我们可以通过 混入 的方式,将模块中的方法混入进类中,从而达到多重继承的效果。
注意事项 :我们所指的多重继承是这样的形式:
class A inherits class B
class A inherits class C
而不是:
class A inherits class B
class B inherits class C
当继承的类中所含的方法和自身方法名相同的时候,保留自身的方法,忽略继承的方法。
实例:
class Person
def name
"My name is Person"
end
end
class Member < Person
def name
"My name is Member"
end
end
puts Member.new.name
# ---- 输出结果 ----
My name is Member
2. inherited
当一个类被继承的时候,会触发inherited
钩子方法,相当于被继承时的通知。
实例:
class Person
def self.inherited(klass)
puts "#{klass} inherited #{self}"
end
def name
"My name is Andrew"
end
end
class Member < Person
end
puts Member.new.name
# ---- 输出结果 ----
Member inherited Person
My name is Andrew
解释 :当类Person
被继承后,触发了inherited
钩子方法,打印了“Member inherited Person”。
3. 小结
本章节我们学习了继承,继承使用<
符号,当类继承一个类的时候,会将继承的类中的实例方法和类方法都移植过来。一个类只能继承一个类。当继承的类中所含的方法和自身方法名相同的时候,保留自身的方法,忽略继承的方法。另外,当一个类被继承的时候,会触发inherited
回调,并返回操作的类名。
本文来自互联网用户投稿,不拥有所有权,该文观点仅代表作者本人,不代表本站立场。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。