在java为成员变量添加set/get方法有快捷键,在ruby有属性存储器,例:
class Test
attr_accessor :name,:age #可读,可写
attr_reader :phone #只可读,不可写
attr_writer :id #只可写,不可读
end
test = Test.new
test.name = "Ruby"
test.age = 18
puts "我的名字叫:#{@test.name},今年#{@test.age}岁."
相当于一个set/get的简化.
class Test
attr_accessor :name,:age
def initialize name,age
@name = name
@age = age
end
end
当这样定义ruby类的时候,你想要声明实例对象必须给定初始化值,例如:
test1 = Test.new("Ruby",18)
否者,
test2 = Test.new #报错
这就类似于Java类的只有 有参构造函数 ,没有定义 无参构造函数 一样.
在ruby中有简化办法,如下:
class Test
attr_accessor :name,:age
def initialize name = nil, age = nil
@name = name
@age = age
end
end
这样
test1 = Test.new("Ruby",18)
test2 = Test.new
两种写法都不会报错了! 下面讲ruby类的方法的私有化,保护方法,公有方法.
声明方式两种,第一种:
class Test
private #以下方法全部私有化
def def1
puts "def1"
end
...
protected #以下方法全部受保护
def def2
puts "def2"
end
...
public #以下方法全部公有化
def def3
puts "def3"
end
...
end
这种声明方式是模块化的,在没遇到下一个关键字之前,全部方法的作用范围全部
由最上面第一个关键字决定.
第二种声明方式:
class Test
def def1
puts "def1"
end
...
def def2
puts "def2"
end
...
def def3
puts "def3"
end
...
private :def1 #私有化
protected :def2 #受保护
public :def3 #公有化
end
这种声明方式是类似之前的属性存储器,但是需要注意的是,关键字 private/protected/public
必须在它限制的方法后面,否则会报错!
然后在介绍一种类方法的声明方式,也就是java里的静态方法
class Test
def self.class_method
puts "自定义类方法."
end
end
Test.class_method
在这里只介绍一种ruby类的类方法声明方式,感兴趣的还可以自己扩展
其他2种方式. 这里介绍完ruby类的声明方式,看完之后基本上自己可以建立自己的类和实例对象了.
页:
1
[2]