AR삽질러

Ruby クラスと定数(Constant)、クラスの継承 본문

Ruby/Ruby-日本語

Ruby クラスと定数(Constant)、クラスの継承

아랑팡팡 2023. 12. 19. 14:36
728x90

 

Ruby クラスと定数(Constant)、クラスの継承

 

1. クラスと定数(Constant)

 - Rubyでは、定数(Constant)は大文字で始まる名前の変数で、 これらは変更可能ですが、変更を推奨していません。 定数を変更すると、Rubyは警告を発生させます。

 

class Car
    REGION = 'USA'
    @@count = 0

    def initialize(name)
        @name = name
        @@count += 1
    end

    def hello
        puts "Hello, I am #{@name}. #{@@count} instance(s)"
    end

    def self.info
        puts "#{@@count} instance(s). Region: #{REGION}"
    end
end

car1 = Car.new('ar')
car1.hello

car2 = Car.new('IT')
car2.hello

car3 = Car.new('Ruby')
car3.hello

Car.info
puts Car::REGION

 


2. クラスの継承

 - 親クラス(スーパークラス)の機能を引き続いで、子クラス(サブクラス)を作成することができる。

 - コードの再利用性や拡張性を高める仕組み。

 

基本概念
 - スーパークラス(Superclass) : 継承するクラス。
 - サブクラス(Subclass) : 継承を受けるクラス。
 - サブクラスは、スーパークラスのすべてのメソッドとプロパティを継承する。 サブクラスは、必要に応じて追加のメソッドやプロパティを持つことができ、継承されたメソッドを再定義(オーバーライド)することもできる。

 

 - 「親」 自動車クラス(タイヤ、エンジン、ブレーキ)

  - 「子」 戦車クラス(+大砲)

  - 「子」 乗用車クラス(+後部座席)

  - 「子」 トラック(+何台)

 

例題

 1. Userクラスを作成

 2. 自己紹介するメソッドhelloを追加

 3. Userクラスを継承した、AdminUserクラスを作成

 4. 管理者として自己紹介するメソッドadmin_helloを追加

class User
    def initialize(name)
        @name = name
    end

    def hello
        puts "Hello, My Name is #{@name}!"
    end
end

class AdminUser < User
    def admin_hello
        if @name == "admin"
            puts "Hello, 管理者 : #{@name}!"
        else
            puts "#{@name}様は管理者ではありません。"
        end
    end

    def hello
        puts "Admin!"
    end
end

user = User.new('AR')
user.hello

admin_user = AdminUser.new('admfin1')
admin_user.hello
admin_user.admin_hello

 

User Class

 - initialize : nameを@nameに割り当てる。

 - hello : 挨拶を出力する。

 

AdminUser < User Class

 - User Classのすべてのメソッドを継承する。

 - admin_hello : @nameが adminの場合管理者としてのメッセージを出力する。

 - hello : User Class の helloメソッドを出力する。

 

 

 

 

 

 

728x90
반응형
LIST