Java 多接口:instanceof无法区分不同的接口
如果我有以下资料:Java 多接口:instanceof无法区分不同的接口,java,Java,如果我有以下资料: interface a { void a_m(); } interface b { void b_m(); } class x implements a, b { public static void main(String [] args) { x cx = new x(); System.out.println(cx instanceof a); <-- true System.ou
interface a {
void a_m();
}
interface b {
void b_m();
}
class x implements a, b {
public static void main(String [] args) {
x cx = new x();
System.out.println(cx instanceof a); <-- true
System.out.println(cx instanceof b); <-- true
}
void a_m() {}
void b_m() {}
}
接口a{
无效a_m();
}
接口b{
无效b_m();
}
类x实现了a,b{
公共静态void main(字符串[]args){
x cx=新的x();
System.out.println(cx instanceof a);instanceof
只是检查您是否确实是某个对象的实例。换句话说,您是否可以合法地分配/强制转换为该类型
在本例中,X同时实现了A和B,因此它确实是这两个的一个实例。如果您想检查X,那么您将执行instanceof X
,而不是instanceof A
和instanceof B
虽然不涉及“区分”。X是一个X,如果您愿意,也可以将其用作A或B,但只有一个对象。创建X时,每个X都必须可用作A、B和X。这就是实现接口的意义
假设X是一座房子。a说的都是“X必须有一扇前门”,B说的是“X必须有一扇后门”。如果Y实现了a而不是B,那么:
X instanceof A == X has a front door == true
X instanceof B == X has a back door == true
Y instanceof A == Y has a front door == true
Y instanceof B == Y has a back door == false
问题是什么?你的问题是什么?这里没有eInstanceof Ere的用法没有超级接口。你只是有一个实现多个接口的类。区分它们是什么意思?cx instanceof a
告诉你如果cx
实现a
cx instanceof b
告诉你如果cx
>实现b
。我仍然看不到问题。这是两个不同的接口。你说“没有区分”。A=前门。b=后门。如果类X没有区分,我最好有一个表示前门和后门的接口。但是你不能创建只有前门的类Y…@yapkm01 You c您还可以将接口C扩展为接口A,B{}
,并让您的类实现它。@TimB我明白了!谢谢。