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 回答
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
添加回答
举报
0/150
提交
取消