class A{}
class B extends A
{
public static void main(String args[])
{
if(new B() instanceof C)
System.out.println("B是A的子类");
}
}
class C{}
instanceof目的就是判断
obj instanceof classname
obj引用是不是classname类型的。
可本例中,好象编译要出错,如果能指定,那这个操作符就失去了意义。

解决方案 »

  1.   

    new B() instanceof C
    你眼睛很好  呵呵
      

  2.   

    new B() instanceof C
    类B和类C根本没有什么关系
    把C改为A就对了
      

  3.   

    使用方法:对象变量 instanceof 类名或接口名
    例如:
    class A {}
    class B extends A {}
    class C extends A {}
    ...
    A a = null;
    if (Math.random() > 0.5) {
        a = new B();
    } else {
        a = new C();
    }
    ...
    if (a instanceof B) {
        B b = (B) a;
        //b.B特有的功能
    } else if (a instanceof C) {
        C c = (C) a;
        //c.C特有的功能
    }
    这里 instanceof 运算符要求左面的对象变量类型得是右面类的子类或右面接口的实现类。
    而它的作用是判断对象变量所引用的对象的实际类型是否是右面给出的类或其子类类型的。
      

  4.   

    instanceof 根据英文名字就很明显知道  是的实例
      

  5.   

    obj引用是不是classname类型的或者妻子类类型
    if(new B() instanceof C)应该是if(new B() instanceof A)吧?
    可以回去看看多态,也可以用来判断子类可否强制造型成父类类型
      

  6.   

    子类instanceof父类 ture
    父类instanceof子类 false