【Java】【No.11】interfaceの継承、instanceof演算子 | yoppyのandroidアプリ開発者になるためのブログ

yoppyのandroidアプリ開発者になるためのブログ

このブログでは、ソフト開発部に所属していながらもソフト開発の経験がほぼゼロのペーペーが、Javaの勉強やアプリ開発を経て、android携帯電話のアプリ開発者のプロを目指す共同学習型のブログです。androidやJavaなど、プログラミングに興味のある方はぜひ見て下さいね!

かなり久し振りの更新です。

長期間、勉強さぼってました…


ということで、復帰一発目は"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演算子を使うと便利なのか、については

あんまりわかりませんでしたあせる

時間があるときにまた調べておきます。


はい、以上!!