かなり久し振りの更新です。
長期間、勉強さぼってました…
ということで、復帰一発目は"interfaceの継承"と、"instanceof演算子"について説明したいと思います。
■interfaceの継承
interfaceは、クラスと同じように継承の仕組みがあります。
ただ、クラスとは一点異なっています。
クラスは、ただ一つのスーパークラスから継承を行いますが、
interfaceは、その制限はなく、いくつも継承が可能です。
例えば、こんな感じで。↓
-----------------------------------
//interface I3は、I1とI2を継承
interface I3 extends I1, I2{
}
-----------------------------------
正直、interface継承の利用シーンが現時点では思いつかないので、
このくらいにしておきます。
■instanceof演算子について
オブジェクトが、「どのクラスなのか」「どのinterfaceを実装しているのか」を確認するための演算子です。
クラスの場合は、以下のように使います。
------------------------------------
if(varName instanceof ClassName){
System.out.println("varName is an object of ClassName");
}
------------------------------------
varNameは、オブジェクトの参照変数で、ClassNameは、クラス名です。
このとき、varNameがClassNameクラス(もしくは、ClassNameのサブクラス)の
変数であれば、trueとなります。
interfaceの場合は、以下のように使います。
------------------------------------
if(varName instanceof InterfaceName){
System.out.println("varName implements a InterfaceName");
}
------------------------------------
InterfaceNameは、interface名です。
このとき、varNameが、InterfaceNameをimplementsしていれば、trueとなります。
もちろん、直接implementsしていなくとも、InterfaceNameを継承したinterfaceを
implementsしていればtrueとなります。同じように、InterfaceNameをimplements
したクラスのサブクラスであっても、trueとなります。
結局、どんなときにinstanceof演算子を使うと便利なのか、については
あんまりわかりませんでした
時間があるときにまた調べておきます。
はい、以上!!