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类型的。
可本例中,好象编译要出错,如果能指定,那这个操作符就失去了意义。
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类型的。
可本例中,好象编译要出错,如果能指定,那这个操作符就失去了意义。
你眼睛很好 呵呵
类B和类C根本没有什么关系
把C改为A就对了
例如:
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 运算符要求左面的对象变量类型得是右面类的子类或右面接口的实现类。
而它的作用是判断对象变量所引用的对象的实际类型是否是右面给出的类或其子类类型的。
if(new B() instanceof C)应该是if(new B() instanceof A)吧?
可以回去看看多态,也可以用来判断子类可否强制造型成父类类型
父类instanceof子类 false