1、关键字:
追加类——类中的方法可在的同名类文件中追加
嵌套类——类中可嵌套类,也可在外部定义嵌套类
特殊类——可为对象添加单独的类,以定义特殊的方法和属性(相应的有特殊方法)
类方法——顾名思义,通过类方式调用的方法,非对象方法
#追加类
class Animal
def put
puts "这是Put方法"
end
def Animal.show
puts "这是Animal类的Show方法"
end
end
class Animal
def show
puts "这是show方法"
end
end
a=Animal.new
a.put
a.show
#嵌套类
class Animal::Head
def put
puts "这是Head类的put方法"
end
end
h=Animal::Head.new
h.put
#特殊类
class<<h
def put
puts "这是特殊类里的Put方法"
end
end
h.put
def h.show
puts "我是h的Show方法"
end
puts h.show
puts Animal.show
2、在程序文件顶层定义的实例变量对整个应用程序中顶层的表达式和函数都有效;
在类和模块中定义的实例变量可以被当前类或模块中的表达式访问;
在类方法中声明的实例变量可以被当前类下的所有方法使用;
类变量可以在各个类之间共享数据;
class Person
def setName(name)
@name=name
end
def setAge(age)
@age=age
end
def setIsMale(isMale)
@isMale=isMale
end
def say
sex=@isMale?"小男孩":"小女孩"
puts "大家好,我叫#{@name},我是一个#{@sex},我今年#{@age}岁"
end
end
z=Person.new
z.setName("小张")
z.setAge(5)
z.setIsMale(true)
z.say
3、属性定义标识符
#attr:根据布尔型数据key的值,定义一个可读写的属性;
#attr_reader:定义一个或多个只读的属性;
#attr_writer:定义一个或多个只写的属性;
#attr_accessor:定义一个或多个可以读写的属性;
class Roadster
def init
@brand="BYD"
@color="黄色"
@weight="1800KG"
@F_zero="210km/h"
end
def brand
@brand
end
def color
@color
end
def weight
@weight
end
def F_zero
@F_zero
end
attr_accessor:color
attr_reader:weight,:F_zero
end
def showCar(car)
puts "这辆车的品牌是:"+car.brand
puts "这辆车的颜色是:"+car.color
puts "这辆车的最高时速是:"+car.F_zero
puts "这辆车的车重是:"+car.weight
end
roadster=Roadster.new
roadster.init
showCar(roadster)
roadster.color="红色"
showCar(roadster)
>>>>>>
这辆车的品牌是:BYD
这辆车的颜色是:黄色
这辆车的最高时速是:210km/h
这辆车的车重是:1800KG
这辆车的品牌是:BYD
这辆车的颜色是:红色
这辆车的最高时速是:210km/h
这辆车的车重是:1800KG
4、代码块
语法:
{
#代码块内容
}
或者
do
#代码块内容
end
e.g.
def say
puts "Hello"
yield
puts "Bye"
end
say do
puts "What U say?"
end
>>>>>>
Hello
What U say?
Bye
5、继承与构造方法
#直接上代码了
class Bird
def initialize(leg,wing)
@leg=leg
@wing=wing
end
end
class Chick<Bird
def initialize(color)
super(2,2)
@color=color
end
def show
puts "这只#@color 色的小鸡有#@wing 只翅膀、 #@leg 条腿"
end
end
chick=Chick.new "黄"
chick.show