(27)模組方法模式(理解抽象 繼承和final)

2021-08-03 13:08:56 字數 2202 閱讀 6325

需求:獲取一段程式的執行時間

原理:獲取程式開始和結束的時間並相減即可

第一想法:將待測時間**塊放在開始時間和結束時間之間

public class gettime 

long end=system.currenttimemillis();

system.out.println();

system.out.println("毫秒:"+(end-start)); }}

public class gettimedemo

}

這種思考方式把待測時間**塊放在開始時間和結束時間之間,如果要計算**執行時間,就得對**改動,而且在**裡面改更難。這時,可以通過繼承,進行方法複寫,具體實現如下:

public class gettime 

long end=system.currenttimemillis();

system.out.println();

system.out.println("毫秒:"+(end-start));

}

}public class subgettime

extends gettime

long end=system.currenttimemillis();

system.out.println();

system.out.println("毫秒:"+(end-start));

}

}

這樣雖然能夠完成,但是**重複率太高,只是**塊發生了變化,其他都沒變。既然是**塊變化,我們可以把**塊單獨放置,然後讓gettime()方法呼叫**塊方法。還需通過繼承,具體如下:

public class gettime 

public void runcode()

}

}

public class subgettime

extends gettime

}

}
public class gettimedemo 

}

其實父類中的runcode()方法內的方法體,寫著也多餘,因為**的不確定性

public class gettime 

public void runcode()

} public class subgettime extends gettime

} }public class gettimedemo

}

這個時候,runcode()方法,在gettime類中顯得多餘了。這時想到抽象方法,抽象類。

public abstract class gettime 

public abstract void runcode();

} public class subgettime extends gettime

} }public class gettimedemo

}

這樣,就優化了**。重=從上面的**可以看出,gettime()方法,就是獲取**執行時間的**,不應該再改變(不能設為私有,私有只在類內可以使用,類外繼承不可見),所以將這個方法改為final,不允許繼承修改此**

public abstract class gettime 

public abstract void runcode();

} public class subgettime extends gettime

} }public class gettimedemo

}

當**優化後,就可以解決這類問題。

這種方式,模板方法設計模式。

什麼事模板式方法呢?

在定義功能時,功能的一部分是確定的,但是有一部分是不確定的,而確定的部分在使用不確定的部分。

那麼這時就將不確定的部分暴露出來,由該類的子類去完成。但不一定用抽象,有些含預設的實現。

大話繼承 2 抽象方法和重寫

此文僅供娛樂,沒有任何攻擊任何人的意思,順便對映一下繼承,私有,抽象方法和重寫.把自己理解和一些心得分享給大家,絕無惡意.大家會發現這兩個name不一樣,乙個是我的名字,乙個是別的對手的名字,那麼應該如何正確的寫呢?加上this就可以了,屬於我這個類的成員變數,如果是super就是我師傅馬保國的名字...

C 抽象方法和虛擬方法理解

首先在c 中虛方法的定義 public virtual void virtualmethod 只要在方法名前加上virtual,就宣告了該方法為虛方法,注意宣告為虛方法後再不能加上abstract,static關鍵字宣告 以下是插入乙個例項來說明虛方法與非虛方法的不同 public class a ...

工廠方法模式和抽象工廠模式

工廠模式是 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,使乙個類的例項化延遲到子類。它有個特點,就是通常工廠的類層次與產品的類層次幾乎是一樣的樹。如果說工廠是你的影子,你就是產品了。在你平時未用到模式的時候,你需要什麼就new乙個,這種情況就好比你躺在地上,人影合一了。那什麼時候需要工廠模...