0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Ruby]クラスについて

Posted at

#はじめに
Rubyのクラスについて改めて理解を深めるために、こちらの記事でまとめます。

#クラスとインスタンス

Rubyではデータの元となる設計図を作り、その設計図を元に実体となるデータを作ります。
その設計図のことをクラスといい、データをインスタンスといいます。

このクラスは親子関係を作ることができ、既存のクラスの情報を元に新しいクラスを作れます。
いわゆる「クラスの継承」です

#クラスの継承

クラスの継承とは既存のクラスを元に新しいクラスを作ることです。
このとき、新しいクラスを子クラスまたはサブクラス、元になったクラスを親クラスまたはスーパークラスと呼びます。

このクラスの継承という概念があることで、共通部分がまとめられるため非常に便利になります。
例えば、新幹線、地下鉄、汽車のクラスを作成するならば、3つに共通する情報をまとめた電車クラスを作成し、その電車クラスを継承したクラスを作成したほうが効率的なわけです。

各クラスは、電車クラスをもとに各々の機能を付け加えていけばいいわけです。
例えば、電車に共通する走る、止まるといった機能に加えて、新幹線では車内販売、地下鉄では吊り革、汽車では汽笛といったように機能を付け加えます。

#クラスの継承の実装

今回は車とパトカーの関係を例に実装を行います。
まずは以下をみます。

sample.rb
class Car #共通部分
 def initialize(car_type, capacity)
   @name = car_type
   @capacity = capacity
 end

 def info
   puts "車種:#{@name} 乗車定員:#{@capacity}人"
 end

end

class PoliceCar < Car #Carクラスの共通部分を継承した上でのパトカークラス

 def siren
   puts "ウゥ〜ウゥ〜"
 end

end

police_car = PoliceCar.new("パトカー", 5)

police_car.siren

あるクラスを継承して新しいクラスを作る場合には以下のように「新しいクラス < 元となるクラス」と書きます。上の例では、PoliceCarクラスがCarクラスを継承しています。

クラスを継承すると、親クラスから子クラスへは
①親のインスタンス変数
②親のインスタンスメソッド
が継承されます。

また、子クラスでは、継承と付け加え意外に、オーバーライドすることができます。
オーバーライドとは、親クラスのメソッドを子クラスに同名のメソッドを定義することによって上書きすることを指します。

下記の例では、CarクラスとPoliceCarクラスそれぞれでinfoメソッドを持っています。本来、PoliceCarクラスでは親クラスのCarクラスが持つinfoメソッドを継承しますが、オーバーライドした場合は、PoliceCarクラスのinfoメソッドとして機能します。

sample2.rb
class Car
 def initialize(car_type, capacity)
   @name = car_type
   @capacity = capacity
 end

 def info
   puts "車種:#{@name} 乗車定員:#{@capacity}人"
 end

end

class PoliceCar < Car

 def info
   puts "車種:#{@name} 乗車定員:#{@capacity}人 パトロール時間:24時間"
 end

 def siren
   puts "ウゥ〜ウゥ〜"
 end

end

police_car = PoliceCar.new("パトカー", 5)

police_car.info #これは、あくまでPoliceCarクラスのinfoメソッドとして振る舞う

#おわりに
以上、Rubyのクラスについてです。
こうした基礎的な部分についてもしっかり振り返っていきたいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?