寻筝 2016-12-12 09:40 采纳率: 72.7%
浏览 1076
已采纳

请教一下JAVA多态性的问题

A a=new B();

这个a和A B分别有什么关系呢?到底是B的对象还是A的对象呢? 如果是B的对象,
a和A又有什么关系呢? 为什么不直接写成 B a= new B()呢?

本人初学者,想请教一下各位,谢谢了!![![图片说明](https://img-ask.csdn.net/upload/201612/1          3/1481596537_959620.jpg)图片说明](https://img-ask.csdn.net/upload/201612/       13/1481596531_714310.jpg)图片说明

  • 写回答

8条回答 默认 最新

  • Readiay 2016-12-12 11:01
    关注

    这个问题比较难,你没什么基础,所以说术语你听不懂。我就说简单点:

    A a = new B(); 这个里面涉及到3个东西,就是你问的A a B。

    首先A B,这个东西叫做类,比如说,A类,B类,人类,你看,这个A B 其实和 人一样的。既然一样,我就拿人来说。

    人,分为男人类,女人类。那这个男人类其实就是人类的一个更细致的划分,我说人包含了男人类,这话没毛病。

    如果你说男人类 包含人类,这话就有毛病了。但是我说到现在都是抽象的,就是都是概念性的东西,
    但是你(假设你叫张三并且是个汉子)。你属于 男人类,你是一个具体的东西,是由抽象的东西(男人类)而来的。

    A a = new B();
    等价于

    人 张三 = new 男人();

    翻译过来就是,你张三是男人,属于人,你问 A 和 a什么关系,就等价于 人 和张三是什么关系,
    就是张三是一个实体,实实在在存在的,而人只是描述张三这个实体属于那种类型的一个说明,就是表示,张三是一个人。

    B a= new B() 这个就等价于 男人 张三 = new 男人();

    完全可以的,没毛病,但是为什么都建议写成 人 张三 = new 男人();而不建议写成 男人 张三 = new 男人()呢

    比如说你有一个类C,这个类里面有个方法,
    addPerson(人 某某某) 或者 addPerson(男人 某某某)

    如果你定义成前面方式,你可以添加男人,也可以添加女人,如果你定义成后面那种,那你只能添加男人。

    抽象的东西往往具有不定性,具有灵活性。具体的东西就定死了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化