2014-06-24 244 views
3

我是Java的新手,所以请耐心等待,我试着看这个问题,但我遇到了麻烦,因为我不知道这个问题涉及的基本术语。“Parent c = new Child()”和“Child c = new Child()”之间有什么区别?

假设:

class Parent {} 

class Child extends Parent {} 

之间有什么区别:提前任何帮助,您可以提供

Parent c = new Child(); 

Child c = new Child(); 

感谢。

+1

多态性

+0

一个区别:给'Child',是不是在'Parent',并尝试用两种方式来调用它的方法。 – awksp

+0

(区别在于变量的类型..) – user2864740

回答

3

在运行时间没有区别。

只有Java编译器(和类型检查器)有区别。在第一种情况下,您声明对c了解最多的信息是它是Parent,即使运行时类型更具体。

这主要有两个作用:

  • c可以在需要Parent时可以使用,但不是当需要
  • ,如果你想的 c类型更改为另一种类型
  • 一个Child(让我们假设class Nephew extends Parent)唯一必要的是要改变的实例化(例如,new Child()变得new Nephew()

第二效果是因为如果代码编译并且c被声明为Parent,这意味着您没有使用任何尚未在Parent中声明的功能,因此从Parent延伸的每个其他类都是有效的substitute

相关问题