2.2Ruby类型之类(Class)

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

(0)
huoxiaoqiang的头像huoxiaoqiang
上一篇 2025年5月1日 19:42
下一篇 2025年5月2日 04:32

相关推荐

  • 2.8Ruby语言的成员可见性(Visibility)

    成员的可见性支持 public、protected、private。 成员的可见性默认为 public,无需显式添加。 支持的方法:类方法、实例访问器属性、实例方法。 注意:public()、protected()、private() 实际上是方法。 成员的可见性 类(子类)内调用 继承 类(子类)外直接调用 同一个类…

    Ruby语言教程 2025年5月8日
    0300
  • 2.1Ruby语言的模块(Module)

    1.模块声明 模块声明是 Module 类的对象。 支持的成员:类常量、类方法、实例访问器属性、实例方法。 2.模块直接访问成员 3.include()方法 支持的成员:类常量、实例访问器属性、实例方法,不支持类方法。

    Ruby语言教程 2025年5月1日
    0190
  • 2.3Ruby类型之字符串(String)

    1.单引号字符串字面量 单引号字符串字面量只支持 \\、\’ 转义序列。 单引号字符串字面量不支持字符串插值。 单引号字符串字面量支持隐式的换行符。 2.双引号字符串字面量 双引号字符串字面量支持所有转义序列。 双引号字符串字面量支持字符串插值。 双引号字符串字面量支持隐式的换行符。 3.访问字符串 4.字符串长度 注…

    Ruby语言教程 2025年5月3日
    0250

发表回复

登录后才能评论