instanceof的概念及对多态的扩展

JAVA中可以使用instanceof关键字判断一个对象到底是哪个类的实例

返回值是boolean类型

class A
{
public void fun1(){
System.out.println("A------->fun1()方法");
}
};
class B extends A
{
public void fun1(){    //覆写A类中的fun1方法
System.out.println("A------->fun1()方法");
}
public void fun2(){
System.out.println("B------->fun1()方法");
}
};
public class InstanceofDemo01{
public static void main(String args[]){
A a1=new B();         //发生向下转型
System.out.println("a1是否为A类的实例:"+(a1 instanceof A));
System.out.println("a1是否为B类的实例:"+(a1 instanceof B));
A a2=new A(); //通过A类实例化对象
System.out.println("a2是否为A类的实例:"+(a2 instanceof A));
System.out.println("a2是否为B类的实例:"+(a2 instanceof B));
}
};

class A
{
public void fun1(){
System.out.println("A------->fun1()方法");
}
};
class B extends A
{
public void fun1(){    //覆写A类中的fun1方法
System.out.println("A------->fun1()方法");
}
public void fun2(){
System.out.println("B------->fun2()方法");
}
};
class C extends A
{
public void fun1(){    //覆写A类中的fun1方法
System.out.println("A------->fun1()方法");
}
public void fun3(){
System.out.println("c------->fun3()方法");
}
};
public class InstanceofDemo02{
public static void main(String args[]){

}
};

设计一个程序 可以调用B中的fun()2方法,C类中的fun()3方法,则程序需要改成

class A
{
public void fun1(){
System.out.println("A------->fun1()方法");
}
};
class B extends A
{
public void fun1(){    //覆写A类中的fun1方法
System.out.println("A------->fun1()方法");
}
public void fun2(){
System.out.println("B------->fun2()方法");
}
};
class C extends A
{
public void fun1(){    //覆写A类中的fun1方法
System.out.println("A------->fun1()方法");
}
public void fun3(){
System.out.println("c------->fun3()方法");
}
};
public class InstanceofDemo03{
public static void main(String args[]){
fun(new B());
fun(new C());
}
public static void fun(A a){
a.fun1();
if(a instanceof B){
B b=(B)a;
b.fun2();
}
if(a instanceof C){
C c=(C)a;
c.fun3();
}
}
};

发生向下转型时要增加验证,避免出现异常。

程序开发中不要去继承一个已经实现好的类,要继承抽象类实现接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值