LoginSignup
3
1

More than 3 years have passed since last update.

Java 3大要素(オブジェクト指向) 備忘録

Last updated at Posted at 2019-09-19

はじめに:

社外研修が記念すべき10日目になったので、自分用の振り返りとして、まとめてみます。

Javaの大きな特徴といえばオブジェクト指向。
オブジェクト指向の特徴といえば・・・
下記の3つになるとのことで、下記を書いていきます。


Java 3大要素

継承

多態性

カプセル化

1.継承

継承とは

Javaでは、既存のクラスをもとにして、新しいクラスを作成することが可能。
上記のことをクラスを拡張する(extends)という。

新しく拡張したクラスが既存のクラスのメンバを受け継ぐことを継承という。

例) 研修では、車だったので動物でいってみます。

inheritance.java

package lesson11_second;
//スーパークラス 動物
class Animal {
    protected int age;
    protected String name;
    protected final static String TRIBE = "動物";
    protected  String settingMessage;


    public Animal() {
        this(TRIBE);
        age = 0;
        name = "noname";
    }
    //オーバーライド対応 tribeで振分け用途
    public Animal(String TRIBE) {
        birth(TRIBE);
    }

    public Animal(int age, String name) {
        this();
        this.age = age;
        this.name = name;
        System.out.println("年齢を" + age + "歳" + "\t"
                + "名前を" + name + "にしました。");
    }

    public void birth(String TRIBE) {
        System.out.println(TRIBE + "が生まれました。");
    }
    public void setAnimal(int age, String name) {
        this.age = age;
        this.name = name;
    }
    public String getAnimal() {
        String settingMessage = "年齢を" + this.age + "歳" + "\t"
                + "名前を" + this.name + "にしました。";
        return settingMessage;
    }
    public void show() {
        System.out.println("年齢は" + age + "歳です。");
        System.out.println("名前は" + name + "です。");
    }
}

//サブクラス 人間
class People extends Animal {
    private String favoriteFood;
    protected final static String TRIBE = "人間";
    //クラス変数で種族の振分
    public People() {
        super(People.TRIBE);
        favoriteFood = "肉";
    }
    public People(int age, String name, String favoriteFood) {
        super(age, name);
        this.favoriteFood = favoriteFood;
        System.out.println("年齢を" + age + "歳" + "\t"
                + "名前を" + name + "好きな料理を" + favoriteFood + "にしました。");
    }
    public void setFavoriteFood(String favoriteFood) {
        this.favoriteFood = favoriteFood;
        System.out.println("好きな料理を" + favoriteFood + "にしました。");
    }
    public void show() {
        System.out.println("");
        super.show();
        System.out.println("好きな食べ物は" + favoriteFood + "です。");
    }

}

public class inheritance {

    public static void main(String[] args) {
        Animal animal = new Animal();
        Animal animal2 = new Animal(20, "佐藤");
        People people = new People();
        People people2 = new People(40, "田中次郎", "ハンバーグ");
        people.setAnimal(20, "山田");
        people.setFavoriteFood("カレー");
        people.show();
        //
    }

}


2.多態性

多態性とは

1つのメソッドが同じ名前で様々な働きをすること。
主に下記の2つの仕組みで実現している。

・オーバーロード
・オーバーライド

オーバーロードとは

メソッド名が同じで、メソッドの引数の型、数が異なる場合、
別の処理を同じクラス内に記述が可能。
呼び出しの際に、メソッドに与える引数によって呼び出す機能を指定できる。

オーバーライドとは

メソッド名が同じで、メソッドの引数の型、数も同じ。
継承を利用したクラス(サブクラス)で利用し、元々のメソッドの機能を上書きする。

3.カプセル化

カプセル化とは

クラス、フィールド、メソッドにアクセス制限ができる。
複数人で開発をする際に、便利。
改修してもらいたくない箇所に関して、アクセス制限をかけることにより、
注意を促せる。(finalとは別)。

アクセス制限は、制限をかけたい対象の前にアクセス修飾子を記述する。
アクセス修飾子の種類は下記の4つ。
・public
・protected
・記述なし
・private

アクセス制限があるフィールドの値を更新するメソッド名は、
set〇〇
アクセス制限があるフィールドの値を取得するメソッド名は、
get〇〇

終わりに

書いたのは、いいんですけど投稿を忘れていました。
これを投稿したのは、予定の2日後・・・。

研修中は、1週間に1本記事を投稿することを目標に立てたので達成できるように頑張りたいです。

自分の備忘録に書きましたが、内容等が誤っていたらご指摘頂けるとありがたいです。
まだまだ、新人なのでご容赦ください。

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