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 したスーパークラスは、サブクラスでオーバーライドしないといけません。
公共職業訓練を受講する為に必要な事を下の記事で書いてます。
良かったらご覧下さい↓↓↓
最後まで読んで頂きありがとうございました。
少しでも勉強になった、役に立ったと思ったら「 サポート」 で貴方のお気持ちを頂けると嬉しいです。
今後の励みにもなります。是非よろしくお願いします。
この記事が気に入ったらサポートをしてみませんか?