Ruby属性与方法

方法(Method)是对对象进行的操作。

Ruby中,只有方法可以操作实例变量,因此Ruby中的封装是强制性的。

在对象外部不可以直接访问,只能通过接口方法访问。

1、通过接口方法访问实例变量

class Person
	def initialize(name,gender,age)
		@name = name
		@gender = gender
		@age = age
	end
	
	def name
		@name
	end
	
	def gender 
		@gender
	end
	
	def age 
		@age
	end

end

me = Person.new("cai","male",23)
puts me.name
puts me.gender
puts me.age

这种方式通过接口方法,获取实例变量,如下所示:

def name
	@name
end
这样的方式显得有些啰嗦,可以利用attr_reader,attr_writer,attr_accessor,attr这几个成员变量控制符。

2、通过变量控制符访问实例变量

class Person
attr_reader :name,:gender,:age
	def initialize(name,gender,age)
		@name = name
		@gender = gender
		@age = age
	end
end

me = Person.new("cai","male",23)
puts me.name
puts me.gender
puts me.age
attr_reader:只读控制符,成员变量只可以被读取,不能改写


class Person
attr_writer :name
attr_reader :gender
attr_accessor :age
	def initialize(name,gender,age)
		@name = name
		@gender = gender
		@age = age
	end
	
	def name
		@name
	end
end

me = Person.new("cai","male",23)
puts me.name
puts me.gender
puts me.age
me.name = "CAI"
me.age = 22
puts me.name
puts me.age
      attr_writer:只写控制符,此时可以改写name的值,但是不能够读取name的值

attr_accessor:读写控制符,即可以写,也可以读


class Person
attr :name	,true
attr :gender,true
attr :age		,false
	def initialize(name,gender,age)
		@name = name
		@gender = gender
		@age = age
	end
end

me = Person.new("cai","male",23)
puts me.name
puts me.gender
puts me.age
me.age = 22		

attr:控制符控制变量是否可以读写。

attr:只能第一个为符号参数,第二个参数是一个bool参数,它用于指示是否符号参数具备写方法,默认false,即只读,true可读写。

attr :age		,false
句代码说明age只读,不能写,所以当希望对其赋值时出现错误。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值