为了账号安全,请及时绑定邮箱和手机立即绑定

java instanceof创建两个强制转换对象出现问题了

java instanceof创建两个强制转换对象出现问题了

乱也 2016-07-10 19:26:15
public class Ilove {public static void main(String[] args) {/* M1 ob1=new M1(); M1 ob2=new M2();//父类的引用是可以指向子类对象的 M1 ob3=new Cks();//爷爷类的引用是可以指向孙子类对象,但仅限于继承的属形与方法 //M2 ob3=new M1();//错误 System.out.println(ob1); System.out.println(ob2); System.out.println(ob3); ob2.eat(); ob3.eat(); //ob2.ser();父类引用指向子类对象不可以调用子类私有属性}}*/   M2 m2=new M2();   M1 m1=m2;//自动类型提升 向上类型转换  // m1.eat();//m1应用自动提升至m2引用地址  //m1.ser();//m1引用无法调用M2私有方法与属性   if(m1 instanceof M2  ){     M2 m22=(M2) m1;//向下类型转换,强制类型转换//向下类型转换有溢出风险,m22引用指向m1引用无法保证m1引用是否指向其他子类形成溢出风险   }else{   System.out.println("无法进行类型转换,转换成M2类型");   }      Cks cks=new Cks();   M1 m11=cks;      if(m11 instanceof Cks){         Cks dd=(Cks) m1;//1.编译时Cks类型 2.运行的是M2类型   }else{   System.out.println("无法进行类型转换,转换成Cks类型");   }   //没有经过基类自动转换,子类无法进行向下转换类型}}
查看完整描述

2 回答

?
米沙之国

TA贡献30条经验 获得超16个赞


你可以在编译框点击代码语言选java,再把代码粘贴进去,不然看着杂乱的代码很头疼的

查看完整回答
反对 回复 2016-07-14
?
sunday_imooc

TA贡献3条经验 获得超0个赞

System.out.println(son1 instanceof father);
System.out.println(son1 instanceof son);
System.out.println(father1 instanceof son);
System.out.println(father1 instanceof father);

true
true
false
true


查看完整回答
反对 回复 2016-07-14
  • 2 回答
  • 0 关注
  • 1971 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信