![](/img/trans.png)
[英]Why do I have to use an import in my subclass, when it's already in the superclass?
[英]If I import a superclass, do I need to import it's subclass too?
我导入了java.util.Calendar
类,它的getInstance()
方法返回其自身的子类对象的实例,在我的例子中,它是java.util.GregorianCalendar
类型。
但是,如果在调用getInstance()
时我也在该程序中使用java.util.GregorianCalendar
,为什么我只需要导入java.util.Calendar
就可以工作?
import java.util.Calendar;
public class Test {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
}
}
在 Java 中, import
声明纯粹是为了名称解析。 您不需要导入GregorianCalendar
,因为您的代码不使用名称GregorianCalendar
来引用任何内容。 来自 Java 语言规范( §7.5 ):
导入声明允许通过由单个标识符组成的简单名称 (§6.2) 引用命名类型或静态成员。
java.util.Calendar
是一个抽象类 ( https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html )
任何扩展(通过实现抽象方法) Calendar
类的类也是一个Calendar
,这就是为什么您可以将GregorianCalendar
用作Calendar
的原因。
但是,如果您决定使用GregorianCalendar
中的特定方法,比方说: setGregorianChange
,那么您需要更改代码以导入GregorianCalendar
并将cal
变量更改为GregorianCalendar
类型
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.