Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果我导入一个超类,我是否也需要导入它的子类?_Java_Oop_Inheritance_Import - Fatal编程技术网

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

Java 如果我导入一个超类,我是否也需要导入它的子类?,java,oop,inheritance,import,Java,Oop,Inheritance,Import,我导入了java.util.Calendar类,它的getInstance方法返回自身子类对象的实例,在我的例子中,该子类对象的类型为java.util.Gregorianalendar。然而,如果在调用getInstance时我也在这个程序中使用java.util.GregorianCalendar,为什么我只需要导入java.util.Calendar就可以工作呢 import java.util.Calendar; public class Test { public stati

我导入了java.util.Calendar类,它的getInstance方法返回自身子类对象的实例,在我的例子中,该子类对象的类型为java.util.Gregorianalendar。然而,如果在调用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中,导入声明纯粹用于名称解析。您不需要导入GregorianCalendar,因为您的代码不使用名称GregorianCalendar来引用任何内容。根据Java语言规范:

导入声明允许通过包含单个标识符的简单名称§6.2引用命名类型或静态成员

在Java中,导入声明纯粹用于名称解析。您不需要导入GregorianCalendar,因为您的代码不使用名称GregorianCalendar来引用任何内容。根据Java语言规范:

导入声明允许通过包含单个标识符的简单名称§6.2引用命名类型或静态成员

Calendar是一个抽象类

任何通过实现抽象方法扩展的类Calendar类也是Calendar,这就是为什么可以将GregoriaCalendar用作日历的原因

但是,如果您决定使用GregorianCalendar中的特定方法,比如说:setGregorianChange,那么您需要更改代码以导入 GregorianCalendar以及将cal变量更改为GregorianCalendar类型。java.util.Calendar是一个抽象类

任何通过实现抽象方法扩展的类Calendar类也是Calendar,这就是为什么可以将GregoriaCalendar用作日历的原因

但是,如果您决定使用GregorianCalendar中的特定方法,比如说:setGregorianChange,那么您需要更改代码以导入
GregorianCalendar以及将cal变量更改为GregorianCalendar类型

导入代码中实际使用的内容。如果实现需要其他东西,它将导入它。@PM77-1因为两个类都在同一个包java.util中,所以Calendar的实现不需要一个import语句来引用GregoriaCalendar。只需添加,您可以导入java.util.*,它将从该包导入所有类。您可以导入代码中实际使用的内容。如果实现需要其他东西,它将导入它。@PM77-1因为这两个类都在同一个包java.util中,所以Calendar的实现不需要一个import语句来引用GregoriaCalendar。只需添加,您可以导入java.util.*它从该包导入所有类。澄清了我的疑问,还有更多!感激消除了我的疑虑,还有更多!请注意,严格地说,您可以编写完全限定名java.util.GregorianCalendar来使用它,而无需导入它。严格地说,您可以编写完全限定名java.util.GregorianCalendar来使用它,而无需导入它。