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