Javaでは、2つ以上の親クラスから継承する多重継承という方法が使えない・・・。
そこで、インターフェイスというメソッドの宣言のみのクラスの様なものを使う・・・。
インターフェイスはクラスとは違い、複数指定することができる・・・。
そして、インターフェイスメソッドは宣言のみなので、自分で処理を実装する必要がある・・・。
今回は、基底クラスBaseClassを継承し、SetInterface、GetInterfaceを実装した派生クラスDerivedClassを定義する・・・。
まず、BaseClass.javaに、
このように定義・・・。
outputメソッドしかなく、printlnで"ABCDE"と出力するだけ・・・。
SetInterface.javaを用意し、
iだけをセットするset、strだけをセットするset、iとstr両方をセットするsetの宣言だけをしたSetInterfaceを書く・・・。
GetInterface.javaの、
GetInterfaceには、intの値iを取得するgetInt、Stringの文字列strを取得するgetStringを宣言・・・。
クラスの継承とインターフェイスの実装を両方やる場合、
<派生クラス名> extends <基底クラス名> implements <インターフェイス名>, ... { }
こう書く・・・。
なので、DerivedClassは、
となる・・・。
各メソッドを実装する・・・。
SetInterfaceから持ってきたsetメソッドを、
このように実装する・・・。
GetInterfaceから持ってきたメソッドは、
こうする・・・。
最後にoutputメソッドは、
とオーバーライド・・・。
MainClass.javaで、
BaseClassオブジェクトbaseを作成し、output・・・。
Derivedオブジェクトderivedを作成し、10と"ABC"をセット・・・。
その後、getIntとgetStringで値を取り出して、それらをprintlnで出力・・・。
その後、derived.outputを呼ぶ・・・。
ABCDE i = 10, s = ABC i = 10, str = ABC
最初はBaseClassのoutputなので、"ABCDE"を出力・・・。
次は、setで10と"ABC"をセットした後、getIntとgetStringで取得したものをprintlnで出力・・・。
最後はDerivedClassのoutoutなので、iとstrを出力・・・。
Sample/MainClass.java at master · bg1bgst333/Sample · GitHub
Sample/BaseClass.java at master · bg1bgst333/Sample · GitHub
Sample/SetInterface.java at master · bg1bgst333/Sample · GitHub
Sample/GetInterface.java at master · bg1bgst333/Sample · GitHub
Sample/DerivedClass.java at master · bg1bgst333/Sample · GitHub