1.如何声明一个子类
复制代码 代码如下:
class Treasure < Thing
这样Thing类中的属性name,description都被Treasure继承
2.以下三种方式传入父类initialize方法的参数分别是什么?
复制代码 代码如下:
# This passes a, b, c to the superclass
def initialize( a, b, c, d, e, f )
super( a, b, c )
end
# This passes a, b, c to the superclass
def initialize( a, b, c )
super
end
# This passes no arguments to the superclass
def initialize( a, b, c)
super()
end
第一种把参数中a,b,c传入父类initialize方法;第二种传入全部参数,但不加上括号;第三种不传入参数
3.属性的setter/getter
有人这样写setter/getter:
复制代码 代码如下:
puts( t1.get_description )
t1.set_description( “Some description” )
这样似乎更方便一些:
复制代码 代码如下:
puts( t1.description )
t1.description = “Some description”
如果你想用第二种写法,你不得不这么写:
注:这是正确的:def name=(aName)
但这却是错的:def name =(aName)
你看出差别的了吗?
根据上一章,你可以知道,这里定义了两个方法:description方法和description=方法。原来是通过将"="加入方法名实现的,ruby真是神奇,Java就不能这样写。
然而,事实上有更简单的方法来实现setter/getter
复制代码 代码如下:
attr_reader :description
attr_writer :description
由一个attr_reader/attr_writer加上符号(:description)构成,事实上,可以一次为多个元素设置setter/getter
复制代码 代码如下:
attr_writer(:name, :description)
attr_accessor(:value, :id, :owner)
attr_accessor
等价于:
复制代码 代码如下:
attr_reader :value
attr_writer :value
4.super
和Java不一样,Ruby中的super方法可以出现在任何方法中,而不只是initialize(构造方法)中。
在第2点中就对super方法的使用有介绍,单独的super将所有参数传给父类initialize,而带参数的super则将指定参数传给父类initialize。
复制代码 代码如下:
# This passes aName, aDescription to the superclass
def initialize( aName,aDescription )
super( aName, aDescription )
end
# This passes a, b, c to the superclass's aMethod
def aMethod( a, b, c )
super
end
5.常量和嵌套类(constants & nested class)
复制代码 代码如下:
class X
A = 10
class Y
def xyz
puts( "goodbye" )
end
end
def self.abc
puts("hello")
end
end
常量:以大写字母开头的变量。
如果要访问常量或内部类,需用 ::
复制代码 代码如下:
puts( X::A )
X::abc # 你也可以用::来调用方法
X.abc # 当然这样也可以
ob = X::Y.new
ob.xyz
6.部分类(Partial Class)
在Ruby中可以对现存的类进行修改,并影响已经生成的对象
复制代码 代码如下:
class A
def a
puts 'a'
end
end
a = A.new
a.public_methods(false)//打印A class所有public的方法
# => [:a] //只有a
class A
def b
puts 'b'
end
end
a.public_methods(false)
# => [:a, :b]//有a和b
而不能修改的,是类继承了哪个类。比如
复制代码 代码如下:
class A
def a
puts 'a'
end
end
class A < String
def c
puts 'c'
end
end
# TypeError: superclass mismatch for class A
# 所有类默认继承了Object类,A也继承了Object,所以当你让A继承String时就会报错
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 《阿瑞亚之旅》评测:更适合佛系玩家体质的跑团
- 黑神话悟空浮屠界紫门怎么开 浮屠界紫门打开方法介绍
- 黑神话悟空龟泪怎么获得 黑神话悟空龟泪获得方法介绍
- 黑神话悟空怎么获得还魂丹 黑神话悟空还魂丹获取方法一览
- HiFi顶级人声天碟《试音齐秦》wav
- 张敬轩.2012-WhyNot(EP)【环球】【WAV+CUE】
- 张小英1988-情愁[新加坡复黑版][WAV+CUE]
- 游民金币礼品补货啦 Steam充值卡等你兑换!
- 《暗喻幻想:ReFantazio》M站均分94分 近年最好的RPG游戏之一
- 今年第一项诺贝尔奖揭幕 生理学或医学奖揭晓
- 《梁静茹 华语乐坛情歌天后 爱久见人心》[WAV/分轨][360MB]
- 《田震 绝版珍藏 依然在飞》[WAV+CUE][600MB]
- 《60首经典金曲 4CD》[WAV/分轨][1.4GB]
- 赵传.1988-我很丑,可是我很温柔【滚石】【WAV+CUE】
- 遗忘曲线.2024-遗忘曲线(EP)【LuuvLabel】【FLAC分轨】