IT未経験者 入社前課題memo⑥


今日も今日とてひたすら基礎練習でした。
日中は少し暑くなってきてなかなかサボりがちなので、やっぱり深夜は静かで気温も落ち着いていて勉強しやすいですね。これを書きながら日を跨いでいます。

継承

  • サブクラスの記述
class サブクラス名 extends スーパークラス名{
}
  • サブクラスは独自のインスタンスも定義できるし、スーパークラスのメソッドも呼び出すことができる。しかし、スーパークラスはサブクラスのメソッドは用いることができない。

  • オーバーライドの仕組み。
    サブクラスのインスタンスに対してメソッドを呼び出すと、まずサブクラスの中でそのメソッドを探し、持っていればそのメソッドを呼び出す。スーパークラスと同名のメソッドをサブクラスに定義しておけばそこが先に実行されるので、結果的にメソッドの内容が上書きさて多様になる。

-サブクラスのインスタンスメソッドから、スーパークラスのインスタンスメソッドを呼び出すことができます。

super.メソッド名(){
}
  • 抽象メソッド abstract をつけると抽象メソッドになり、中身の処理は書かない。
    抽象メソッドは、サブクラスがそのメソッドをオーバーライド(上書き)していなければエラーになるので、サブクラスがそのメソッドをオーバーライドし、処理内容を定義することを強制できる。なので、サブクラスに、あるメソッドを必ず持たせたいという場合は、スーパークラスに抽象メソッドとして定義しておくことが大事。

  • 抽象メソッドを1つでも持つクラスは「抽象クラス」と呼ばれ、abstract class クラス名{}となる。抽象クラスはインスタンスを生成できない。

  • スーパークラスのインスタンスフィールドにクラス型の変数を定義することで、フィールドにインスタンス変数を持つことが可能。
    下図はPerson型のownerというインスタンスフィールドを持つように定義した

Vehicle.java
private Person owner;
  • buyメソッド(Personクラスのインスタンスが乗り物を購入できるように、buyメソッドを定義) ?

- 多態性 ?