見出し画像

今日の学び_20240303

なぜ、あなたはJavaでオブジェクト指向開発ができないのか

復習

  • 「操作」は、メッセージをきっかけとしたオブジェクトの振る舞いを表す

    • メッセージ:振る舞いとなるきっかけの事。じゃんけんゲームで言えば、「じゃんけんぽん」の掛け声など。

    • オブジェクト:役割を表すクラスを実体化したインスタンスの総称。インスタンス全般を指すよっていう認識

    • アクセス修飾子

      • そのオブジェクトのフィールドやメソッドに対して、外部のオブジェクト(本のプログラムで言うならば、JudgeオブジェクトがPlayerオブジェクトにアクセスするみたいなイメージ)がアクセスできるかどうかを指定するもの

      • privateがついているフィールドやメソッドは、他のオブジェクトからアクセスすること自体出来ない。(オブジェクト.フィールド(メソッド)みたいなことができないと言うこと)

        • じゃあ、これだと外部からそのフィールドやメソッドについて何も知ることができないじゃないか!となってしまう

        • そこで、getterやsetterのメソッドを用意することで、そのメソッドを介して、フィールドやメソッドにアクセスをすることができるようにしている。

      • ここで言うアクセスとは、フィールドであれば読み書きすること、メソッドであれば呼び出すことを指している。

lesson4

  • 継承とは

    • 継承によって出来ること:サブクラスからスーパークラスのメソッドやフィールドを呼び出すことができる。super()のように。

      • サブクラスからスーパークラスのメソッドを呼び出したい場合は、super.メソッド名()のように呼び出すことが出来る。

    • 継承によって、サブクラスはスーパークラスの性質を受け継ぐことが出来るだけではなく、そこに追加や変更を加えることが出来る。

  • オーバーライドとは:スーパークラスが持つメソッドを、サブクラスのメソッドで上書きすること

  • スーパークラスとは:継承元のクラス

  • サブクラスとは:継承したクラス

  • javaの言語仕様:スーパークラスでコンストラクタを定義していた場合、サブクラスでもコンストラクタを定義する必要がある

    • その際、サブクラスのコンストラクタがスーパークラスと同じ定義である場合、super()で定義することで、スーパークラスのコンストラクタを呼び出して、処理をそのまま丸投げすることができる。


lesson5

  • インタフェースとは

    • オブジェクトの操作に対する振る舞いを定義するものである。

  • インタフェースを実装するとは

    • 実際の中身の処理を記述すること。インタフェースを実現するクラスを生成すること。

    • インタフェースはメソッドの定義だけ記述しているので、実際にimplementsでインタフェースのクラスを定義して、インタフェースを実装する。(つまり、定義したメソッドをインタフェースを実現するクラスのメソッドでオーバーライドする。)

  • インタフェースを実装することのメリットって何?

    • インタフェースを通すことで、利用する側はインタフェースの実装を隠蔽して利用することが出来る。つまり、利用する側はインタフェースの実装の中身を気にしなくて良いので、依存がなくなる。

    • 実際に変更するのは、インタフェースを実装しているクラスや呼び出しの仕方を変えるくらい。


つぶやき
スマホなどをついつい触ってしまう時間を減らしたい。。習慣化するって本当に難しいなと感じています。
一番の敵は周りではなく、自分自身の中にあるって言う言葉がありますが、あれって本当にその通りで、自分の中の欲望に打ち勝つことが出来るかどうかって本当に大切ですね。。
今日も見て下さりありがとうございました。

この記事が気に入ったらサポートをしてみませんか?