美文网首页
ruby中实例变量、类变量、实例方法、类方法区别

ruby中实例变量、类变量、实例方法、类方法区别

作者: D_w | 来源:发表于2021-03-03 17:00 被阅读0次

实例变量和类变量

1、实例变量可以理解为类属性,能被类方法访问,不能被实例方法调用不能被继承,子类中赋值不会影响父类。
2、类变量可以理解为类内的全局变量,可以在类方法和类实例方法中访问,也能被子类继承,并且子类修改之后,父类的值也会更改。

class Test
  @@class_var = 10
  @class_instance_var  = 1
  #类方法: 两种变量都可以访问
  def self.outclass_var
      p "访问类变量: #{@@class_var}"
  end
  def self.outclass_instance_var
      p "访问实例变量:#{@class_instance_var}"
  end
  #类实例方法: 不能访问类实例变量
  def outclass_var
      p "访问类变量: #{@@class_var}"
  end
  def outclass_instance_var
      p "访问实例变量:#{@class_instance_var}"
  end
end

#如果两个变量不初始化,这里就打印不出来。不知道是不是版本的问题
puts Test.class_variables #=>@@class_var
puts Test.instance_variables #=>@class_instance_var

#类变量,可以被子类共享且修改
class SubCls < Test
  @@class_var = 12
end

#可以看到现在类变量值都被修改了
Test.outclass_var #=>12
SubCls.outclass_var #=>12

#子类无法继承父类的实例变量
Test.outclass_instance_var #=>1
SubCls.outclass_instance_var #=>空

#类实例方法不能访问实例变量
Test.new.outclass_var #=>12
Test.new.outclass_instance_var #空

#再看一下子类,和父类的情况相同
SubCls.new.outclass_var #=>12
SubCls.new.outclass_instance_var #空

实例方法和类方法

1、在类方法中不能调用实例方法,只能访问和自己一样的类方法,但实例方法可以访问类方法和实例方法。

2、在类方法中不能引用[实例变量](用static修饰的变量),但实例方法可以引用成员变量和实例变量。

3、在类方法中不能使用super、this关键字。

4、类方法不能被覆盖,但实例方法可以被覆盖。

5、类方法的调用是:类名.类方法,而实例方法的调用必须new出一个对象,即:对象.实例方法。

相关文章

  • ruby中实例变量、类变量、实例方法、类方法区别

    实例变量和类变量 1、实例变量可以理解为类属性,能被类方法访问,不能被实例方法调用不能被继承,子类中赋值不会影响父...

  • 23:python中的类变量、实例变量、类方法、静态方法和实例方

    1、类变量和实例变量 类变量:定义在类里面,实例方法方法外面的变量 实例变量:定义在实例方法里面的变量,常用:se...

  • From Objective-C to Ruby(4)-类和模块

    类 定义类 OC: ruby: 初始化方法 OC: ruby: 实例变量和属性 OC: ruby: 类方法和对象方...

  • runtime(一)

    总结:Classget 类名,父类;实例变量;属性;实例方法,类方法,方法实现;Copy 实例变量列表;属性列...

  • Ruby元编程

    类 方法 代码块 类宏 Eval方法 实例变量、方法、类 实例变量(Instance Variables)是当你使...

  • 类方法和实例方法的区别

    类方法和实例方法 1、类方法是属于整个类,而不属于某个对象。2、类方法只能访问类成员变量,不能访问实例变量,而实例...

  • Java se - 实例方法,类方法

    定义 实例方法:可以对当前对象的实例变量进行操作,也可以对类变量进行操作,由实例对象调用。类方法:不能访问实例变量...

  • 静态变量与实例变量的理解

    (静态变量又称类变量,静态方法又称类方法)。 静态变量和实例变量的区别? 1、静态变量用static 关键字修饰,...

  • python-面向对象:类和实例

    本文内容: 类的创建 类变量、类方法的创建和调用 实例变量、实例方法的创建和调用 静态方法的创建和调用 私有变量、...

  • py3笔记12:面向对象

    1. 简介 类 方法 类变量或类属性 数据成员:类变量或实例变量用于处理类及其实例对象的相关的数据 方法重写 局部...

网友评论

      本文标题:ruby中实例变量、类变量、实例方法、类方法区别

      本文链接:https://www.haomeiwen.com/subject/hvaqqltx.html