Java-面向对象(高级篇)--instanceof关键字
来源:互联网 发布:python urlencode gbk 编辑:程序博客网 时间:2024/05/29 12:17
instanceof关键字
在Java中可以使用instanceof关键字判断一个对象到底是哪个类的实例,格式如下:
对象 instanceof 类——>返回 Boolean 类型;
【验证instanceof关键字的作用】
class A{ public void fun1(){ System.out.println("A--》public void fun1()"); } public void fun2(){ this.fun1(); }}class B extends A{ public void fun1(){ System.out.println("B-->public void fun2()"); } public void fun3(){ System.out.println("B-->public void fun3()"); }}public class InstanceofDemo{ public static void main(String[] args){ A a1=new B();//向上转型 System.out.println("A a1=new B():"+(a1 instanceof A)); System.out.println("A a1=new B():"+(a1 instanceof B)); A a2=new A();//通过A类中的构造方法实例化本类对象 System.out.println("A a2=new B():"+(a2 instanceof A)); System.out.println("A a2=new B():"+(a2 instanceof B)); }}
运行结果为:
A a1=new B():trueA a1=new B():trueA a2=new B():trueA a2=new B():false
从以上程序发现,通过子类实例化的对象同时也是子类和父类的实例,所以可以直接进行向上或者向下转型,但是如果直接使用了父类实例化本类对象,则一定就不在是子类实例了,所以还是不能转型的。在进行对象的向下转型前最好进行判断在进行相应操作。
【在向下转型前进行验证】
class A{ public void fun1(){ System.out.println("A-->public void fun1()"); } public void fun2(){ this.fun1(); }}class B extends A{ //覆写A中的方法 public void fun1(){ System.out.println("B-->public void fun1()"); } //子类中自己定义的方法 public void fun3(){ System.out.println("B-->poublic void fun3()"); }}class C extends A{ public void fun1(){ System.out.println("C-->public void fun1()"); } public void fun5(){ System.out.println("C-->public void fun3()"); }}public class PolDemo04{ public static void main(String[] args){ fun(new B());//传递B类实例,产生向上转型 fun(new C());//传递C类实例,产生向上转型 } public static void fun(A a){//接收父类对象 a.fun1(); if(a instanceof B){ B b=(B)a;//向下转型 b.fun3();//调用子类自己定义的方法 } if(a instanceof C){ C c=(C)a;//向下转型 c.fun5();//调用子类自己定义的方法 } }}
运行结果:
B-->public void fun1()B-->poublic void fun3()C-->public void fun1()C-->public void fun3()
在上面的fun()方法中因为要调用各个子类自己的方法,所以必须进行对象的向下转型,但是为了保证程序进行时不出现转型异常,所以在发生转型时进行检验,以保证程序的运行正常。
0 0
- Java-面向对象(高级篇)--instanceof关键字
- Java面向对象高级--instanceof关键字
- JAVA面向对象-----instanceof 关键字
- Java面向对象instanceof关键字
- Java面向对象-instanceof关键字
- 面向对象(高级)————instanceof关键字
- 面向对象(高级)————instanceof关键字
- java 第十一天 面向对象(高级篇之接口、对象的多态性,instanceof)
- Java-面向对象(高级篇)--final关键字
- 第二十六、Java面向对象之instanceof 关键字
- Java面向对象高级--final关键字
- 面向对象高级——instanceof关键字的使用以及抽象类与接口的应用
- Java面向对象总结(高级篇)
- java例程练习(对象转型及instanceof关键字)
- 面向对象高级续2(instanceof关键字、抽象类和接口的应用、Object类、包装类)
- Java-面向对象(高级篇)--对象的多态性
- 面向对象Object.equals.instanceof解析java
- Java面向对象高级
- javafx之TableView的TaleCell
- 生成与使用静态库/动态库
- mongodb的安装命令
- Emag eht htiw Em Pleh(模拟法)
- UVA 11462 Age Sort 计数排序 .
- Java-面向对象(高级篇)--instanceof关键字
- 【openjudge】河中跳房子 二分查找
- 轮播图点击跳转
- 总结14
- 欢迎使用CSDN-markdown编辑器
- 求树的重心
- JavaFX之TableView的TableRow
- 二维码
- BZOJ4380[POI2015] Myjnie