一个对象。 new Son();比喻成狗, Son s 和Father f只是牵狗的绳,绳子肯定不是狗。只要是new时,才生产一个对象。你句子只有一个new,就一个对象。
你要搞清楚java里面的运行时类型和声明类型你说的属性和方法存在差别 其实仅仅是存在 代码编译期间,声明为父类的变量 (实际上是子类的实现)无法调用 子类独有的方法,这是因为java编译器不允许,也是多态的一种保护机制如果是上面的情况,你自己清楚是子类的实现,可以将父类类型的实例再强制装换为子类,这样就可以完整调用 Son s=new Son(); Father f=s; Son s2=(Son)f; //通过s2可以调用完整的子类方法与属性
你应该google : "多态"
new Son();比喻成狗,
Son s 和Father f只是牵狗的绳,绳子肯定不是狗。只要是new时,才生产一个对象。你句子只有一个new,就一个对象。
Son s=new Son();
Father f=s;
Son s2=(Son)f; //通过s2可以调用完整的子类方法与属性