介面第一個功能,
大家都說是可避免多重繼承,那麼首先要回答,為何多重繼承在Java是必須避免的呢?
若是現有A、B、C三個類別,然後這三個類別關係是:C is a A;C is also a B。
那麼萬一A、B類別有一模一樣名稱的方法,C類別要繼承的是哪個方法呢??
這樣就不能確定了,所以這是Java必須避免多重繼承的原因。
而又為何介面可以避免掉多重繼承這個問題呢?介面不是可以被多重實作,萬一某類別
多重實作不同介面,而不同介面又有相同名稱的方法呢??
不同介面若有相同名稱的方法,在Java中會被當作是擁有相同功能、行為之方法。
因為介面內定義的方法,本來就是用一種名稱去對應一種行為的,
例如swim就只會是游泳,不會是別的行為;run就只會是跑,不會是別的行為;
attack就只會是攻擊,也不會是別的行為。
既然這樣,若不同介面擁有相同名稱之方法,那就會被Java認為是相同的方法,
而既然方法都一樣,那類別實作介面的方法時,實作一個就好了,因為都是一樣的方法。
所以,若是多重實作介面的類別遇到需實作相同名稱之方法,實作其中一個方法即可。
因此,介面透過這個「相同名稱就是相同行為,實作一遍就好」的方式,避開了
多重繼承會出現的問題,也就是說介面確實是可以取代多重繼承的。