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转型成为了一个明智的选择。SEM主要涉及付费推广,如百度竞价、广告联盟以及各种在线营销策略,如新闻源发布、视频营销、社交媒体营销(如微信微博)。通过这些手段,企业可以在短期内看到...
为解决这些问题,华为采用了包括数字化平台构建、运营指挥平台的搭建、组织结构和企业文化的转型等措施。 数字化平台的构建是华为数字化转型的核心。华为通过整合IT基础设施,构建了统一的数字化平台,这有助于打破...
在这一背景下,中数联盟发布的《2022中国企业数字化转型白皮书》聚焦了中国企业当前在数字化转型中的关键挑战和成功案例,旨在为中国的商业决策者提供实操性指导和理论支持。 报告首先指出,技术是推动企业数字化...
总之,数字化转型已经成为中国经济增长的一个重要驱动力。中国已经是全球第二大数字经济体,数字化转型不仅为企业提供了增长的契机,也为整个社会经济发展注入了新的活力。在推动技术与产业升级、应对资源环境挑战的...
- 百度作为一个大型的购房信息聚合平台,拥有庞大的用户基础和强大的数据分析能力。 - 通过精准匹配购房者需求与房源信息,百度能够为房地产企业提供有效的市场营销解决方案。 - 未来,百度将继续致力于为合作...
【数字金融追踪:转型之路——联合贷向左,助贷向右】 近年来,随着数字金融的快速发展,联合贷款和助贷作为两种重要的线上信贷模式,备受业界关注。近日,网贷新规的出台对这两种模式产生了深远影响。网贷新规旨在...
随着人工智能技术的迅速发展及其在各行各业中的广泛应用,房地产行业也开始积极拥抱这一变革力量,实现从传统模式向智能化、数字化转型。百度作为中国领先的互联网巨头之一,在AI领域拥有强大的技术积累和广泛的市场...
- 数字化转型是信息化到智能化的必经之路,这表明在当前科技发展背景下,企业和社会必须经历由传统的信息化向更高级的智能化转型的过程。 - 文档提到了刘润,他是润米咨询的创始人,也是多个知名企业的战略顾问,这...
在数字化时代浪潮中,人力资源管理(HRM)不再是传统意义上的部门职能,而是转化为一个动态、前瞻性的战略伙伴。转型不仅涉及工作方法和技术平台的改变,更关键的是思维方式和组织文化的重塑。本文将深入探讨数字化...
一些具有前瞻性的大型企业在向互联网转型时常常采取激进的态度,这种做法虽然体现了企业的决心与魄力,但在缺乏充分准备的情况下,可能会导致企业遭受重大损失。例如,曾经作为传统零售业巨头的李宁,在全面拥抱...
在技术架构设计方面,构建一个可扩展、高效、稳定的数字化技术架构是实现企业转型的基石。为此,企业应当优化其基础设施,升级应用系统,以及强化数据管理系统的构建。这就要求企业不仅要关注最新的云计算、物联网...
在中国互联网市场这块肥沃的土壤上,百度如同一只迅猛崛起的雄狮,其在全球搜索引擎市场的地位正在经历前所未有的跃升。随着百度收益和净利润的显著增长,股价的不断提升,人们不禁开始思考:这个中国搜索引擎巨头...
6. **绿色能源**:白皮书还讨论了如何通过智能交通系统促进电动汽车的普及和充电桩网络的优化布局,推动城市向清洁能源转型,实现可持续发展。 7. **案例研究**:书中可能包含多个实际案例,展示Apollo智能交通引擎...
随着互联网行业从PC时代向移动时代的过渡,百度意识到了变革的紧迫性,决定打造一个适应新环境的“新百度”。这一转型过程无疑充满挑战,百度不仅要颠覆以往的业务模式和产品策略,还要在与竞争对手如阿里、腾讯等...
例如,工商银行将百度知道平台与自己的知识库对接,使得客户通过百度搜索可以直接获得解答,这样的举措将银行客服中心的服务范围从传统的问题解答扩展到了更为前瞻性的决策支持上。 其次,服务模式由全过程代替售后...
标题:百度零售大数据智能平台整体解决方案概述在数字化浪潮的推动下,百度零售大数据智能平台...总之,百度零售大数据智能平台是零售商数字化转型道路上的强大助力,引领行业向智能化、个性化的未来迈进。重新回答||
百度作为中国互联网行业的领军企业之一,在面临日益激烈的市场竞争和收入压力的背景下,于近期进行了较大规模的架构调整。此次调整旨在优化内部资源分配,提高业务效率,并探索新的增长点。百度创始人兼CEO李彦宏在...
论文还提出了一种设想,即在国家主导下,通过外资疏导和民间资本积聚,构建风险投资模式,以此促进报业的数字化转型。国家的指导和支持可以帮助引导外资进入,同时鼓励民间资本的参与,共同推动报业的健康发展。 总...
在当今信息化社会的背景下,位置服务已成为人们生活和工作中不可或缺的一部分。百度地图作为一种成熟稳定的电子地图服务,不仅为公众提供了便捷的导航和地理位置信息服务,而且其开放的API接口也为各行各业的智能化...
曾经以陌生人交友应用深入人心的陌陌,如今正试图打造一个以兴趣驱动的社区平台——陌陌吧,这一转变让它站到了掌上天涯、百度贴吧的同一条跑道上。 在微信这个庞然大物崛起的今天,陌陌通过差异化竞争,成功地稳固...