繁体   English   中英

如果我导入一个超类,是否也需要导入它的子类?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM