見出し画像

Java訓練#19(private •abstractメソッド)

今日の授業

今日は前回の復習でオーバーライドをやりました。そして新しく、多態性、private、abstract メソッドについて学びました。

多態性(ポリモルフィズム)

サブクラスのインスタンスはスーパークラスのインスタンスとして使う事ができます。この事を「  多態性  」と言います。
例えば

Son chi = new Son(“子供”);  //サブクラス

Mother oy = new Mother(“親”);   //スーパークラス

この様に Sonクラス(サブクラス) のインスタンスがあるとします、このSonクラスのインスタンスを Motherクラス(スーパークラス) のインスタンスに代入する事ができます。

Mother oy = chi;
または、
Mother oy = new Son(“子供”);

コードはこの様になります。

例えば以下のようなフィールドがあったとします。

class Mother 
   int age;
   int month;
class Son
   String name;
   int age;
   int month;

そして、Mother oy = chi; したあとのフィールドの呼び出した時の反応は以下のようになります。

chi.name   呼び出せる
chi.age    呼び出せる
chi.month  呼び出せる
oy.name    呼び出せない(Mother クラスに nameはないため)
oy.age     呼び出せる
oy.month   呼び出せる

name はSonクラスにしかないため代入していても、呼び出す事はできません。
メソッドでも同じ事がいえます。
Sonクラスでオーバーライドしていたら呼び出す事ができます。

privateについて

private が付いてるスパークラスのフィールドやメソッドはサブクラスには継承されません。
このことを「  アクセス制限   」といいます。

class Mother 
   private int age;
   private int month;
   private void getFamily(int age, int month) {

このような場合、サブクラスでは上で書いたフィールドとメソッドは使う事が出来ません。
しかし、private のついたスーパークラスのフィールドやメソッドを使う方法もあります。
それは、スーパークラスのフィールドに値をセットする為のメソッドや、フィールドを取得する為のメソッドを作成します。
そうする事によって private されている値を使う事が出来ます。

なぜ privateするのか?
private にする事が無難とされていて、不本意に書き換えられる事がなく、それによって他のクラスのプログラミングがやりやすくなったり、他のクラスに影響がでないようにする為です。

おまけ  :  final修飾子 は上書きを禁止にするものです。

abstractについて

メソッドの名前と引数の型だけ決まっていて、処理内容がないメソッドを Abstractメソッド(抽象メソッド)といい、Abstractメソッドを含んでるクラスをAbstractクラス(抽象クラス)といいます。

抽象クラスはインスタンスを作る事ができません。

スーパークラス(抽象クラス)では、例えば「 何かをするメソッド 」を作ります。
そして、サブクラスでそのメソッドに具体的に「 何をどのようにするか 」を書きます。

abstract したスーパークラスは、サブクラスでオーバーライドしないといけません。

公共職業訓練を受講する為に必要な事を下の記事で書いてます。
良かったらご覧下さい↓↓↓

最後まで読んで頂きありがとうございました。

少しでも勉強になった、役に立ったと思ったら「 サポート」 で貴方のお気持ちを頂けると嬉しいです。
今後の励みにもなります。是非よろしくお願いします。

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