一、抽象類的應用:
1、概念:當多個類存在相同的功能時,我們就可以把這些功能提出出來,單獨封裝在乙個類裡面,只提出方法名,不提出方法實體就是功能的主體部分不同,我們進行向上抽取,只抽取功能的定義部分,不抽取功能的主體。
2、abstract,抽象的,可以修飾類和方法,被修飾的方法只能有方法名,沒有方法實體;而如果想使用這個方法,就要繼承這個抽象類,然後在子類中對抽象方法進行重寫,而且必須重寫,因為抽象方法沒有實體。
3、抽象類的特點:
(1),抽象方法一定定義在抽象類中,abstract修飾方法,那麼類class前一定要有abstract、
(2),抽象類和抽象方法必須要被abstract 修飾;
(3),抽象的類是不能被用來建立物件的,因為抽象方法沒有實體,所以呼叫了也沒有意義,不能初始化。
(4),抽象類中的方法別使用必須有子類重寫,然後子類建立物件來呼叫。
(5),抽象類中可以定義非抽象的方法,
(6),子類如果只重寫一部分的抽象方法,那麼該子類還是乙個抽象類,抽象類就不能建立物件,就不能呼叫方法,所以子類要重寫抽象類中所有的方法,才可以呼叫。
具體**體現如下:
class abstractdemo
}//定義乙個抽象類
abstract class student
}class basestudent extends student
void play()}
注意:抽象類和普通的類沒有太大的區別,就是抽象類不能通過new 來建立物件,而且抽象類裡面也可以定義非抽象的方法,如上所示:sleep()方法。
二、模板方法設計模式:
需求:求一段**執行所需時間
結束時間 - 開始時間就是**執行所需要的時間,system提供一種方法獲取當前時間,
system.currenttimemillons(),是以2023年一月一日0是開始計時,**體現如下:
class gettime
}abstract class gettime1
class subgettime extends gettime1}}
注意:定義功能時,功能的一部分確定,而確定的部分在使用不確定的部分時,我們可以將不確定的部分暴露出去:定義在乙個抽象類裡,這樣不確定部分變化時,直接重寫抽象類中的方法就行,提高了**的擴充套件性。
抽象類的模板方法設計模式
一 前言 抽象類體現的就是一種模板模式的設計,抽象類作為多個子類的通用模板,子類在抽象類的基礎上進行擴充套件 改造,但子類總體上會保留抽象類的行為方式。二 模板方法能解決的問題 1 當功能內部一部分實現是確定的,一部分實現是不確定的。這時可以把不確定的部分暴露出去,讓子類去實現。2 編寫乙個抽象父類...
抽象類和模板方法模式
抽象方法和抽象類 抽象類 用abstract修飾符修飾的類,如 public abstract class generalservice 抽象方法 用abstract修飾符修飾的方法,抽象方法不能有方法體,如 public abstract void service 抽象類和抽象方法的規則如下 必須...
利用抽象類實現模板設計模式
有時候,我們會碰到另外的一種情況,比如,銀行利息的計算,都是利率乘以本金和存款時間,但是,各種存款方式計算利率的方式的不同,一般而言,定期的存款利率比活期的利率要高 而定期的時間越長,它的利率也越高。因此,我們在設計 銀行賬戶 這個類的時候,我們可以將計算利息這個方法定義成抽象方法,然後,再在各種不...