寻筝 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 shape_predictor_68_face_landmarks.dat
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料