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