Java中多態(tài)的實(shí)現(xiàn)方式有以下幾種:
繼承:子類繼承父類,并重寫(xiě)父類的方法,通過(guò)父類引用指向子類對(duì)象實(shí)現(xiàn)多態(tài)。
接口:定義一個(gè)接口,多個(gè)類實(shí)現(xiàn)該接口,并重寫(xiě)接口中的方法,通過(guò)接口引用指向?qū)崿F(xiàn)類對(duì)象實(shí)現(xiàn)多態(tài)。
方法重載:在同一個(gè)類中定義多個(gè)同名方法,參數(shù)類型或個(gè)數(shù)不同,通過(guò)方法的重載實(shí)現(xiàn)多態(tài)。
方法重寫(xiě):在父類中定義一個(gè)方法,子類重寫(xiě)該方法,通過(guò)父類引用指向子類對(duì)象實(shí)現(xiàn)多態(tài)。
抽象類:定義一個(gè)抽象類,子類繼承抽象類,并實(shí)現(xiàn)抽象類中的抽象方法,通過(guò)抽象類引用指向子類對(duì)象實(shí)現(xiàn)多態(tài)。
匿名內(nèi)部類:通過(guò)創(chuàng)建一個(gè)沒(méi)有名字的類來(lái)實(shí)現(xiàn)多態(tài)。
Lambda表達(dá)式:使用Lambda表達(dá)式來(lái)實(shí)現(xiàn)多態(tài),可以簡(jiǎn)化代碼。
需要注意的是,多態(tài)只適用于父類或接口類型引用指向子類或?qū)崿F(xiàn)類對(duì)象,不能用于同一類的不同對(duì)象之間的方法調(diào)用。