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我明白了!谢谢。