簡體   English   中英

在 Java 中覆蓋用戶庫類

[英]Overriding User Library Classes in Java

我用 BlueJ for Mac 編寫 java 代碼。 我添加了 stdlib.jar 庫(來自princeton http://introcs.cs.princeton.edu/java/stdlib/ )。 在添加這個庫之前,我有自己的名為 StdDraw.java 的類(我在項目中使用的特定類)並復制/粘貼了代碼。 我還調整了一些代碼並添加了一些新行。 由於我無法編輯庫代碼,我如何覆蓋或擴展庫類以添加額外的功能?

由於庫類是final的,你不能擴展它們。 另一種選擇是將它們包裝在您自己的類中。 例如,您可以創建自己的繪圖類,該類具有委托給的StdDraw實例。 對於您的許多方法,您可以調用StdDraw實例的相應方法,或者您可以通過自己實現方法來模擬覆蓋。

只需簡單地擴展類,

public MyClass extends ClassFromLib

確保庫 jar 文件位於類路徑中。 如果該類的作者將其聲明為 final,則表明它不適合子類化。 那么最好的選擇是使用委托模式。

我在這個編輯器中編寫了下面的代碼,所以沒有承諾它會遵守,但希望你能明白。

public Myclass {
    private ClassFromLib cfl = new ClassFromLib();

    public void methodA(){
        //Do whatever you need here
        cfl.methodA();  //Doesn't have to be the same name. 
        //Do whatever you need here
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM