ruby中class A < B是什么意思?

Python013

ruby中class A < B是什么意思?,第1张

继承啊,表示goodbye这个类继承了hello

class Hello#此处声明一个类Hello

def howdy#定义一个方法

greeting = "Hello,Matz!"#给变量greeting赋值

puts greeting#输出变量greeting

end

end

classs Goodbye <Hello #Goodbye类继承Hello类,也就是说hello类里面定义的方法howdy在 # goodbye里也有

def solong#这是goodbye类自己定义的方法,也就是说到现在goodbye里已经有两个方法了

farewell = "Goodbye,Matz!"

puts farewell

end

end

friendly = Goodbye.new#Goodbye类的实例化,生成对象friendly

friendly.howdy#对象调用类Goodbye中的方法,这个方法是继承自Hello的

friendly.solong#这个调用类Goodbye自己定义的方法

#输出结果为:

Hello,Matz!

Goodbye,Matz!

ruby中带“!"和不带"!"的方法的最大的区别就是带”!"的会改变调用对象本身了。比方说str.gsub(/a/,'b'),不会改变str本身,只会返回一个新的str。而str.gsub!(/a/,'b')就会把str本身给改了。但是gsub和gsub!还有另外一个不同点就是,gsub不管怎么样都会返回一个新的字符串,而gsub!只有在有字符被替换的情况下才会返回一个新的字符串,假如说没有任何字符被替换,gsub!只会返回nil.example:'abc'.gsub(/a/,'b')#返回'bbc''abc'.gsub!(/a/,'b')#返回'bbc''abc'.gsub(/d/,'a')#返回'abc''abc'.gsub!(/d/,'a')#返回nil