[Ruby笔记]20.Ruby super initialize class

code in file abc.rb

class SuperABC
    def initialize
        @a = 1
        @b = 2
        @c = 3
    end
end

class ABC < SuperABC

    def initialize
        super # keyword
        @a = 0
    end

    def a 
        puts @a 
    end

    def b
        puts @b
    end

    def c
        puts @c
    end
end


t = ABC.new
t.a
t.b
t.c

ruby abc.rb

PS C:\Users\Administrator\RubyCode> ruby abc.rb
0
2
3

why?

关键词 super 保留了SuperABC 类中的初始值,而后在ABC类里面,只对变量@a 进行了重新赋值为零,所以最终输出是 0 2 3

reference

《The Well-Grounded Rubyist, Second Edition》
(https://www.manning.com/books/the-well-grounded-rubyist-second-edition)
4.2.5. Going up the method search path with super

Zzz・・・・・・
   /ヽ、
  /__ヾ--、
 ~(=-ω-)ノ )~
 ---------------
 http://emoji.vis.ne.jp/neruyo_3koma2.htm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值