LoginSignup
1
1

More than 5 years have passed since last update.

【YouTube】足立研 Javaプログラミング入門講座 -オブジェクト指向を理解する-【まとめ】

Posted at

オブジェクト指向を復習するにあたって参考にした、慶應義塾大学の小野雅裕元助教授による足立研セミナーがとてもわかりやすかったので要点を自分なりにまとめたいと思います。

オブジェクト指向

そもそもなぜオブジェクト指向が重要なのか?
- 人気のプロジェクト言語はほとんどがオブジェクト指向の概念を取り入れているから
- 大きなプロジェクトや複数人でプロジェクトを動かすときにとても便利だから

クラスとインスタンス

オブジェクト=全てのもの
e.g.)僕の車、小野先生のネクタイ、新庄剛志の歯、りんご、便座


クラス=もののカテゴリー
インスタンス=クラスの下に入るもの
e.g.)クラス=犬 インスタンス=チコちゃん(小野先生の犬)、白戸次郎、パトラッシュ
e.g.)クラス=人 インスタンス=小野雅裕、バラクオバマ、アホの坂田
スクリーンショット 2018-12-05 22.27.02.png

カプセル化

アクセス修飾子
- public 外部からでも参照可能
- protected 同一クラス、同一パッケージ、サブクラスからの参照可能
- default 同一クラス、同一パッケージからの参照可能
- private 同一クラスからの参照可能
つまり書き換えられたくない度合いによってアクセス修飾子を使い分けることが必要。
必要な情報を隠蔽し、メソッドを通してしか情報にアクセスさせないことをカプセル化と言います。

クラスの継承

クラスの階層構造
スーパークラス
e.g.)
Animal

サブクラス
e.g.)
1. Dog
2. Cat

インスタンス
e.g.)
1-1. チコちゃん
1-2. 白戸次郎
1-3. パトラッシュ
2-1. ミーミ
2-2. ひこにゃん
2-3. ミャロメ
スクリーンショット 2018-12-05 23.00.48.png

class Dogclass Catのスーパークラスとしてclass Animalを宣言したいときはextendsを用いて、

class Animal {
~~
}
class Dog extends Animal {
~~
}
class Cat extends Animal {
~~
}

とするとそれぞれのクラスが紐づけられます。

なぜこのような階層構造が必要か

class Animalでは以下のような特徴があるとします。
- 目が2つ
- 尻尾が1つ
- 足が4本
これらの情報は共通項としてサブクラスにも適応することができます。
しかしclass Dogではさらにclass Catにはない以下の特徴を追加するとします。
- 人懐っこい
- ワンッと鳴く
逆にclass Catにはclass Dogにはない以下の特徴を追加します。
- 高くジャンプする
- ニャーと鳴く

階層構造を持たせることでこのような共通項目とするものと独自の項目とするもので使い分け、扱いやすくすることが可能になります。

ポリモーフィズムとオーバーライド

ポリモーフィズムとは一定の型を用意し、その型の中に入る引数によって異なる動作を実装する方法のことです。
上記の例を使えば、

animal.java
class Animal {
~~
public abstract void poke (); //pokeの中身はabstractをつけることで空になっている
~~
}

dog.java
class Dog {
~~
@Override //abstractをつけたスーパークラスの抽象メソッドをこちらのサブクラスで実装
public void poke (){
  makeSound(); //ワンッと鳴く
  say(); //何かしらメッセージを入れる
}
}

まとめ

以上、今回は慶應義塾大学の小野雅裕元助教授による講義『足立研セミナー』を、YouTubeを参照しながらまとめました。

1
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
1
1