# encoding: utf-8
#E4.3-1.rb 。

class Person

def initialize( name, age=18 )
@name = name
@age = age
@motherland = "China"
end #初始化方法结束

def talk
puts "my name is "+@name+", age is "+@age.to_s
	if @motherland == "China"
	puts "I am a Chinese."
	else
	puts "I am a foreigner."
	end
end # talk方法结束

attr_writer :motherland
attr_writer :age
attr_reader :name
end # Person类结束

p1=Person.new("kaichuan",20)
p1.talk

p2=Person.new("Ben")
p2.age=22
p2.motherland="ABC"
p2.talk

p3=Person.new("Tom")
print p3.name , "\n"
=begin 
my name is kaichuan, age is 20
I am a Chinese.
my name is Ben, age is 22
I am a foreigner.
Tom
请按任意键继续. . .
=end
@age.to_s的含义是:将数@age转换为字符串。
initialize是初始化方法,相当于Java的构造器。参数age有一个缺省值18,可以在任何方法内使用缺省参数,而不仅仅是initialize。如果有缺省参数,参数表必须以有缺省值的参数结尾。
attr_writer :motherland 相当于
def motherland=(value)
return @motherland =value
end
attr_ reader :motherland 相当于
def motherland
return @motherland
end
这就是我们熟悉的getter 和setter 方法的简写形式。你不熟悉也不重要。