在Java中,一個(gè)類可以同時(shí)繼承另一個(gè)類并且實(shí)現(xiàn)一個(gè)或多個(gè)接口。這種方式被稱為“類繼承接口”。
這種技術(shù)有時(shí)需要在繼承父類的同時(shí)實(shí)現(xiàn)接口。假設(shè)我們有一個(gè)Animal類,并且想要讓它能夠像動(dòng)物園里其他動(dòng)物一樣進(jìn)行叫聲的輸出。我們可以定義一個(gè)Sounding接口,其中包含一個(gè)名為makeSound()的方法,類似于這樣:
public interface Sounding { public void makeSound(); }
然后,我們可以修改Animal類,使其繼承另一個(gè)類(例如Mammal類)并實(shí)現(xiàn)Sounding接口,如下所示:
public class Animal extends Mammal implements Sounding { // Animal的實(shí)現(xiàn)細(xì)節(jié)... public void makeSound() { // Sounding接口的實(shí)現(xiàn)細(xì)節(jié)... } }
這里,我們使用了extends關(guān)鍵字,使得Animal類繼承了Mammal類。我們同時(shí)使用了implements關(guān)鍵字,使得Animal類能夠?qū)崿F(xiàn)Sounding接口中定義的makeSound()方法。
現(xiàn)在,我們可以創(chuàng)建Animal對(duì)象并調(diào)用其makeSound()方法,就如同調(diào)用Java中的任何其他方法一樣。
Animal myAnimal = new Animal(); myAnimal.makeSound(); // 輸出Animal實(shí)現(xiàn)的叫聲...
當(dāng)然,在實(shí)際編程中,我們可能會(huì)遇到更加復(fù)雜的情況,需要更多的類和接口進(jìn)行繼承和實(shí)現(xiàn)。但是,這種類繼承接口的技術(shù)為我們提供了一個(gè)強(qiáng)大的方式來(lái)擴(kuò)展和組織我們的Java代碼。