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

如果给cat也新建一块内存空间,结果是怎样的?是不是不能同时强制转换成2个或多个子类?这个多态性的作用应用,举个例子可好?什么情况下会写到这个

如果给cat也新建一块内存空间,结果是怎样的?是不是不能同时强制转换成2个或多个子类?这个多态性的作用应用,举个例子可好?什么情况下会写到这个

正在回答

4 回答

可以

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) m11;//1.编译时Cks类型 2.运行的是M2类型

   }else{

  System.out.println("无法进行类型转换,转换成Cks类型");

   }

   //没有经过基类自动转换,子类无法进行向下转换类型

}

}


0 回复 有任何疑惑可以回复我~

我自己试了下新建一个但是不知道为什么老报错明明和dog一模一样

0 回复 有任何疑惑可以回复我~

你再说什么?我没太懂

0 回复 有任何疑惑可以回复我~

新建一个cat的空间是可以的,就会调用父类的方法。后面没懂起

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

如果给cat也新建一块内存空间,结果是怎样的?是不是不能同时强制转换成2个或多个子类?这个多态性的作用应用,举个例子可好?什么情况下会写到这个

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信