问答详情
源自:10-3 Java 中的抽象类

声明对象区别

在创建cell和smartphone对象时都是声明的telphone对象,是否能用子类申明?有什么区别呢?

提问者:神毓藏玄 2018-12-04 00:55

个回答

  • 慕婉清612822
    2018-12-04 13:46:23
    已采纳

    按你的描述,telephone应该是父类,cell和smartphone是继承了cell的其子类。

    以下,我将你说的例子,抽象为java中的类来说明。

    我理解的你的问题是:父类引用指向其子类对象,子类引用指向本类对象,其区别是什么?

    1. 用子类引用指向本类对象

    telephone t1 = new telephone();
    cell t2 = new cell();
    smartphone t3 = new smartphone();

    这是最原始的用法。引用和声明的类型是相同的,此时通过引用可以调用对象中所有的public属性和方法。

      2.用父类引用指向其子类对象

    telephone t1 = new cell();
    telephone t2 = new smartphone();

    视频中是以抽象类的形式演示这个关系的。

    用父对象引用来指向(声明)其子类对象,

    那么通过这个父类引用仅能调用子类从父类中继承或重写的public方法和属性,

    而无法调用子类新声明(即子类中有,父类中没有)的任何方法和属性。