1.类声明
类声明是 Class
类的对象。
class 类名
#类体
end
2.成员定义
注意:Ruby 语言不支持类访问器属性。
class 类名
#类变量
@@a = 1
#类实例变量
@b = 1
#类常量
C = 1
#类方法
def self.f1()
end
#实例getter
def x()
@x
end
def y()
@y
end
#实例setter
def x=(value)
@x = value
end
def y=(value)
@y = value
end
#实例方法
def f2()
end
#构造方法
def initialize(x, y)
#实例变量
@x = x
@y = y
end
end
class 类名
#实例getter
attr_reader :x, :y
#简写
attr :x, :y
#实例setter
attr_writer :x, :y
#实例getter和实例setter
attr_accessor :x, :y
end
3.继承
3.1方法继承
一个子类只可以直接继承自一个父类,不可以直接继承自多个父类。
子类会直接继承父类中可继承的方法,间接继承祖父类中可继承的方法,以此类推,直至没有可继承的方法。
注意:从父类中继承过来的方法无需在子类中重新声明,否则会发生覆盖。
class 子类名 < 父类名
#子类体
end
3.2覆盖(Override)
如果从父类中继承过来的方法在子类中重新声明,则在子类中重新声明的方法会覆盖从父类中继承过来的方法。
注意:只需要方法名相同,就会发生覆盖。
注意:覆盖并不会影响父类中原来的方法。
class A
def f()
1
end
end
class B < A
def f()
2
end
end
puts B.new().f() # 2
3.3super()方法
super()
方法用于在子类中调用父类的方法。
#传递所有参数
super
#传递指定参数
super(参数)
#不传递参数
super()
4.创建对象
4.1创建对象
#无实参
对象名 = 类名.new()
#有实参
对象名 = 类名.new(实参)
4.2方法重载(Overload)
Ruby 语言不支持方法重载。
4.3self关键字
如果在类上下文,则 self
关键字指向当前类。
如果在对象上下文,则 self
关键字指向当前对象。
5.访问成员
#外部调用
类名::类变量
类名.类方法名()
对象名.实例访问器属性名
对象名.实例方法名()
#内部调用
#类上下文
@@类变量
@类实例变量
类常量
类方法名()
#实例上下文
@实例变量
类常量
实例getter
self.实例setter
实例方法()
原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/ruby/rubylang/37405.html