栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java多态使用其超类变量创建子类对象

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java多态使用其超类变量创建子类对象

1.据我了解,由于变量类型是Animal,所以a将具有Animal的所有特征。但是,由于创建的对象是蜥蜴,因此将使用Lizard类中的所有重写方法,而不是Animal类中的方法。这是正确的吗?

是的,你是对的。

2.此外,创建a时将使用哪个类构造函数?

          Animal a = new Lizard("Lizzy", 6);  //Lizard extends Animal

由于Lizard是Animal的子类,因此首先将调用Lizards构造函数,然后从Lizards构造函数进行调用,因为默认情况下,除非您调用 重载,
否则Lizard构造 函数 中的第一行将是 super() 。蜥蜴的 构造函数 使用 this()
。在Animal构造函数中,第一行将再次调用 super()
。假设Animal不扩展任何类,则

java.lang.Object's
构造函数将像
java.lang.Object
每个对象的超类一样被调用。


  public Object() {    }    Class Animal {     public Animal(){      //there will be a super call here like super()    }    class lizard extends Animal {    public Lizard(your args) {       //there will be a super() call here and this call's animal's no-args constructor     }    } }

执行顺序为

  1. 蜥蜴的构造函数将被调用
  2. 除非对重载的构造函数进行this()调用,否则对super()进行调用,即,调用Animals no-args构造函数
  3. java.lang.Object的Constructor将使用super()从动物调用
  4. java.lang.Object的构造函数代码将执行
  5. 动物构造函数代码将执行
  6. 蜥蜴的构造函数代码将执行


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/515379.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号