ruby基礎④インスタンス変数へのアクセス、self、クラスメゾット・クラス変数・クラス定数の定義、クラスの継承、オーバーライド
ルビーの基礎も大詰めです。
次回で基礎は終わるので、その次はスクールで作ったrubyのアプリケーションの確認をしていきたいと思います。
本日も渋谷にある急成長中の企業に訪問させていただきました。
エンジニアとして活躍されている方と話をさせていただきました。
『プログラミングは日々変化していくので、それをいかにキャッチアップできるかが重要』
ありがたきお言葉!!
基礎を固めたら、どんどん新しい技術にも挑戦していきたい!!
# ----------------------------------------------------------------- # インスタンス変数にアクセス アクセサ class User attr_accessor :name #setterとgetterの両方 attr_reader :name #getterのみ #setter: name=(value) 値をセットする方 #getter: name 値を取得する方 def initialize(name) #initializeはインスタンスが生成されたタイミングで発動 @name = name #インスタンス内に情報を保持できるインスタンス変数@にnameを追加 インスタンス変数はそのクラス内であれば使用可能 end def sayHi puts "hi! i am #{@name}" end end sakurai = User.new("sakurai") p sakurai.name sakurai.sayHi sakurai.name = "kondo" p sakurai.name sakurai.sayHi => "sakurai" hi! i am sakurai "kondo" hi! i am kondo # ----------------------------------------------------------------- #selfに関して class User attr_accessor :name #setterとgetterの両方 def initialize(name) @name = name end def sayHi #selfはそのメゾットを受け取っているインスタンス自身になる # self.name -> @name puts "hi! i am #{@name}" puts "hi! i am #{self.name}" puts "hi! i am #{name}" #self省略 #selfはそのメゾットを受け取っているインスタンス自身になりレシーバーともいう end end sakurai = User.new("sakurai") p sakurai.name sakurai.sayHi sakurai.name = "kondo" p sakurai.name sakurai.sayHi => "sakurai" hi! i am sakurai hi! i am sakurai hi! i am sakurai "kondo" hi! i am kondo hi! i am kondo hi! i am kondo #----------------------------------------------------------------- # クラスメゾットの定義 # クラスメ変数の定義 # クラスメ定数の定義 class User @@count = 0 #クラス変数の定義 VERSION = 1.1 #クラス定数の定義 def initialize(name) @@count += 1 #クラスが生成されるごとにカウントアップ @name = name end def sayHi puts "hi! i am #{@name}" end def self.info #クラスメゾットの定義 puts " #{VERSION}: User class ,#{@@count} instances." end end sakurai = User.new("sakurai") kondo = User.new("kondo") naoya = User.new("naoya") User.info p User::VERSION #::でクラス変数を呼び出せる => 1.1: User class ,3 instances. 1.1 #----------------------------------------------------------------- # クラスの継承 class User def initialize(name) @name = name end def sayHi puts "hi! i am #{@name}" end end # User:親クラス,Super Class # AdminUser:子クラス,Sub Class class AdminUser < User def sayHello puts "Hello from #{@name}" end end sakurai = AdminUser.new("sakurai") sakurai.sayHi sakurai.sayHello => hi! i am sakurai Hello from sakurai #----------------------------------------------------------------- # オーバーライド class User def initialize(name) @name = name end def sayHi puts "hi! i am #{@name}" end end # User:親クラス,Super Class # AdminUser:子クラス,Sub Class class AdminUser < User def sayHello puts "Hello from #{@name}" end def sayHi #オーバーライド puts "hi! i from admin" end end sakurai = AdminUser.new("sakurai") sakurai.sayHi sakurai.sayHello => hi! i from admin Hello from sakurai #-----------------------------------------------------------------