コンストラクタのあるクラスなら継承ができる
Hoge.java
class Hoge{
//...
public Hoge(/*...*/){
//...
}
public int hogeMethod(){
//....
}
}
Huga.java
class Huga extends Hoge{
public Huga(/*...*/){
super(/*...*/);
//...
}
public int hugaTsukaiyasuiMethod(/*...*/){
//...
}
}
Huga huga = new Huga(/*...*/);
int a = huga.hogeMethod();
int b = huga.hugaTsukaiyasuiMethod();
中身なんてなんでもいいんですが、普通の、というよりはせめてコンストラクタのあるクラスって継承で簡単に機能が拡張できますよね。
Builder しかマトモにインスタンスを生成する方法が無い!!
コンストラクタすら存在せずBuilderしか提供されていないと、ラッパーとか作りたい時にこうなっちゃいますよね
Huga.java
class Huga {
private Hoge hoge;
public Huga(/*...*/){
hoge = HogeBuilder.builder()/*...*/.biuld();
//...
}
public int hugaTsukaiyasuiMethod(/*...*/){
//...
}
}
Huga huga = new Huga(/*...*/);
int a = huga.hogeMethod(); // ← できない!!!!!!!!
int b = huga.hugaTsukaiyasuiMethod();
ラッパーなんだからそもそも Hoge
のメソッドにアクセスする必要のあるものが存在するのがおかしいのか、それでも直接中のメソッド叩いた方がいい時なんていくらでもある訳で、かといって Hoge
のメソッドのラッパー全部作る訳にはいかないし、 getHoge()
みたいなアクセサつくるのがいちばんいいのかなぁ。