`

百度知道上的一个向下转型问题

阅读更多

 

public class TestCasting{
 public static void main(String []args){
  Animal a=new Animal("name");
  Dog d=new Dog("dogname","yellow");
  Cat c=new Cat("catname","blue");
  
  a=new Dog("bigyellow","yellow");
  System.out.println(a.name);  //输出bigyellow
  
  Dog d1=(Dog)a;
  
  System.out.println(d1.name);  //输出null
  System.out.println(d1.furColor); //输出 yellow
 }
}
class Animal{
 public String name;
 Animal(String name){
  this.name=name;
 }
}

class Dog extends Animal{
 public String name;
 public String furColor;
 Dog(String name,String furColor){
  super(name);
  this.furColor=furColor;
 }
}

class Cat extends Animal{
 public String name;
 public String eyesColor;
 Cat(String name,String eyesColor){
  super(name);
  this.eyesColor=eyesColor;
 }
}

这一行:System.out.println(d1.name);  //输出null
为什么输出的是null而不是:bigyellow?



最佳答案:Dog d1=(Dog)a;

 

因为这一句的定义是把父类对象强制转换为子类对象,又因为子类对象有name和furColor两个属性,所以可以去调用,而"bigyellow"已经被赋给了父类的name属性,所以你再调用子类的name属性时就没有了,只能是null.
其实你程序里把子类都又重新定义一个name属性是多余的.
应该这样写.子类不要再定义name属性,而是直接super(name),这样的话,父类和子类都通用一个name属性,就不会出现错误了.而更加符合继承的思想.

其余答案:

1.因为你在调用构造函数的时候调用了父类的构造方法,实际上传入的bigyellow是赋值给了animal接口里面那个name变量,子类Dog的name变量并没有赋值

2首先要明白继承的关系,你每个类里都是用super(name);来进行取值,而super是调用超类(也就是父类)里的东西,你用a对象去点name,肯定能取出,但d1对象是子类的对象,所以取出来为null..
3分析下程序的执行过程如下:

一、首先: Animal a=new Animal("name");
    定义一个引用a指向new Animal("name")

二、然后:a=new Dog("bigyellow","yellow");
    把引用a指向新的对象new Dog("bigyellow","yellow");,此时调用子类Dog的构造函数,即:
Dog(String name,String furColor){
  super(name);
  this.furColor=furColor;
 },构造函数super(name);,表示把Dog(String name,String furColor)中的形参name传入,并通过super(name);赋值给父类构造函数,即此时的父类中的name的值为bigyellow;
this.furColor=furColor;意思是把子类的furColor赋值为形参furColor,此时子类的furColor值为yellow;

三、Dog d1=(Dog)a,定义一个子类引用a指向a强制转换后的子类对象,
而 System.out.println(d1.name);  //输出null
含义是输出子类d1的局部变量name.而此时子类d1的局部变量name并没有赋值,局部变量没有赋值时候,name默认为值为null,故输出null;
而
  System.out.println(d1.furColor); //输出 yellow
打印子类d1的局部变量furColor,已经赋值为yellow,故输出yellow 

 

 



 

分享到:
评论

相关推荐

    跟着百度走,从SEOer向SEM转型.docx

    在这种情况下,SEOer向SEM转型成为了一个明智的选择。SEM主要涉及付费推广,如百度竞价、广告联盟以及各种在线营销策略,如新闻源发布、视频营销、社交媒体营销(如微信微博)。通过这些手段,企业可以在短期内看到...

    埃森哲中国企业数字转型指数报告.pdf

    总之,数字化转型已经成为中国经济增长的一个重要驱动力。中国已经是全球第二大数字经济体,数字化转型不仅为企业提供了增长的契机,也为整个社会经济发展注入了新的活力。在推动技术与产业升级、应对资源环境挑战的...

    百度:2024年百度房地产开发商百度房开商行业年度报告:AI时代 衍化房企智能数字化转型.pdf

    - 百度作为一个大型的购房信息聚合平台,拥有庞大的用户基础和强大的数据分析能力。 - 通过精准匹配购房者需求与房源信息,百度能够为房地产企业提供有效的市场营销解决方案。 - 未来,百度将继续致力于为合作...

    数字金融追踪:转型之路:联合贷向左,助贷向右.pdf

    【数字金融追踪:转型之路——联合贷向左,助贷向右】 近年来,随着数字金融的快速发展,联合贷款和助贷作为两种重要的线上信贷模式,备受业界关注。近日,网贷新规的出台对这两种模式产生了深远影响。网贷新规旨在...

    百度房开商:AI时代 衍化房企智能数字化转型.pdf

    随着人工智能技术的迅速发展及其在各行各业中的广泛应用,房地产行业也开始积极拥抱这一变革力量,实现从传统模式向智能化、数字化转型。百度作为中国领先的互联网巨头之一,在AI领域拥有强大的技术积累和广泛的市场...

    四大天网系统企业转型四大问题分析报告 .docx

    一些具有前瞻性的大型企业在向互联网转型时常常采取激进的态度,这种做法虽然体现了企业的决心与魄力,但在缺乏充分准备的情况下,可能会导致企业遭受重大损失。例如,曾经作为传统零售业巨头的李宁,在全面拥抱...

    2021百度Apollo智能交通白皮书-ACE智能交通引擎2.0.rar

    6. **绿色能源**:白皮书还讨论了如何通过智能交通系统促进电动汽车的普及和充电桩网络的优化布局,推动城市向清洁能源转型,实现可持续发展。 7. **案例研究**:书中可能包含多个实际案例,展示Apollo智能交通引擎...

    数字化转型从信息化到智能化的必经之路-刘润.pdf

    - 数字化转型是信息化到智能化的必经之路,这表明在当前科技发展背景下,企业和社会必须经历由传统的信息化向更高级的智能化转型的过程。 - 文档提到了刘润,他是润米咨询的创始人,也是多个知名企业的战略顾问,这...

    互联网时代银行客服中心服务转型趋势研讨.pdf

    例如,工商银行将百度知道平台与自己的知识库对接,使得客户通过百度搜索可以直接获得解答,这样的举措将银行客服中心的服务范围从传统的问题解答扩展到了更为前瞻性的决策支持上。 其次,服务模式由全过程代替售后...

    百度零售大数据智能平台整体解决方案(PDF格式).rar

    标题:百度零售大数据智能平台整体解决方案概述在数字化浪潮的推动下,百度零售大数据智能平台...总之,百度零售大数据智能平台是零售商数字化转型道路上的强大助力,引领行业向智能化、个性化的未来迈进。重新回答||

    解读百度架构调整:收入压力下,综合互联网公司的开始?.docx

    百度作为中国互联网行业的领军企业之一,在面临日益激烈的市场竞争和收入压力的背景下,于近期进行了较大规模的架构调整。此次调整旨在优化内部资源分配,提高业务效率,并探索新的增长点。百度创始人兼CEO李彦宏在...

    报业数字化转型管理论文.doc

    论文还提出了一种设想,即在国家主导下,通过外资疏导和民间资本积聚,构建风险投资模式,以此促进报业的数字化转型。国家的指导和支持可以帮助引导外资进入,同时鼓励民间资本的参与,共同推动报业的健康发展。 总...

    李彦宏和他的“新百度”:颠覆自己是重要的.docx

    综上,李彦宏领导下的百度在面临移动互联网时代的挑战时,选择颠覆自我,调整战略,以保持公司的竞争力和创新能力。李彦宏的领导风格和决策哲学对百度的转型起到了关键作用,同时也反映了互联网行业持续创新和适应...

    【精品】2019年百度基于AI的工业制造业解决方案.pptx

    百度智能云的战略是通过ABC三位一体,服务于能源、制造、交通、游戏、安防、金融等多个行业。 在工业制造业领域,百度AI提供了智能质检解决方案,以应对传统质检模式的挑战。传统质检依赖大量的人工劳动力,存在...

    百度城市大脑白皮书.pdf

    百度城市大脑是一个集成多项技术和服务的智能系统,旨在提升城市的管理效率与居民的生活质量。该系统依靠大数据分析、人工智能、物联网等技术,构建起一个能够对城市进行全景洞察、实时感知和智能决策的智慧化平台。...

    IDC转型云计算 等死还是开放?.docx

    在它的"流量、技术、盈利"的口号下,三年内为合作伙伴创造的市值等于"重塑一个腾讯"。 百度的开放平台则是依靠"搜索"这个独家秘技,希望依靠"框计算"能够将用户的搜索直达到开发者,这个开放分为数据开放和应用开放...

    2021职业教育行业洞察-百度营销研究院-202105.pdf

    报告基于百度大数据平台百度观星盘的数据分析,提炼出行业数据、人群数据、地域数据、消费者需求数据以及投放案例等多个维度,提供了职业教育行业在疫情冲击下的整体状况及各细分市场的表现和趋势。 首先,职业教育...

    YOKA 时尚网获得百度领投1500万美元融资.docx

    这一事件标志着互联网巨头百度对时尚领域的深度布局,以及对YOKA在时尚内容和用户社区建设上的高度认可。 百度作为中国最大的搜索引擎公司,拥有庞大的用户基础和流量入口,对于YOKA来说,这意味着能够接入更多的...

    低调的领导者李彦宏:解决问题才能接近理想.docx

    ### 低调的领导者李彦宏:解决问题才能接近理想的IT知识点解析 #### 一、百度的云战略转型 ...他在推动百度向云计算领域转型的同时,也注重培养企业的核心价值观,并通过自己的实际行动激励着每一位员工。

    2022最新Android中高级面试题合集.pdf

    向下转型则是将父类引用转换为子类引用,以便访问子类特有的方法和属性。需要注意的是,强制类型转换可能抛出`ClassCastException`,因此在转换前应确保对象确实为预期的子类类型。 以下是一个多态的简单案例,展示...

Global site tag (gtag.js) - Google Analytics