簡體   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