Re: [問題] 面試時被問到介面功能

作者: TKB5566 (我們的元首阿道夫希特勒)   2023-05-01 21:15:57
介面第一個功能,
大家都說是可避免多重繼承,那麼首先要回答,為何多重繼承在Java是必須避免的呢?
若是現有A、B、C三個類別,然後這三個類別關係是:C is a A;C is also a B。
那麼萬一A、B類別有一模一樣名稱的方法,C類別要繼承的是哪個方法呢??
這樣就不能確定了,所以這是Java必須避免多重繼承的原因。
而又為何介面可以避免掉多重繼承這個問題呢?介面不是可以被多重實作,萬一某類別
多重實作不同介面,而不同介面又有相同名稱的方法呢??
不同介面若有相同名稱的方法,在Java中會被當作是擁有相同功能、行為之方法。
因為介面內定義的方法,本來就是用一種名稱去對應一種行為的,
例如swim就只會是游泳,不會是別的行為;run就只會是跑,不會是別的行為;
attack就只會是攻擊,也不會是別的行為。
既然這樣,若不同介面擁有相同名稱之方法,那就會被Java認為是相同的方法,
而既然方法都一樣,那類別實作介面的方法時,實作一個就好了,因為都是一樣的方法。
所以,若是多重實作介面的類別遇到需實作相同名稱之方法,實作其中一個方法即可。
因此,介面透過這個「相同名稱就是相同行為,實作一遍就好」的方式,避開了
多重繼承會出現的問題,也就是說介面確實是可以取代多重繼承的。
作者: Isaea (Isaea)   2023-05-03 00:38:00
推,講解的很透徹
作者: Hsieh455125 (Hsieh455125)   2023-05-04 13:22:00
推優文
作者: andytung444 (龍御天)   2023-05-16 19:52:00
推,寫得很容易懂
作者: ywk (牙籤)   2023-05-29 06:51:00
好文推
作者: xrururururu (胖達)   2023-06-06 15:16:00
好奇問 第一項 多重繼承取不同方法名字不就可以避免?
作者: Jichang (C.C.Lemon)   2023-06-14 12:15:00
多重繼承的意思是 你想要 爸爸的功能 也要媽媽的功能 java 無同時繼承兩個 但是可以用介面搭配 Delegation 來實現
作者: chyl13579 (阿帥)   2023-09-24 13:20:00
好文堆堆
作者: goodice (一水隔天涯)   2023-10-08 23:01:00
好文
作者: chyl13579 (阿帥)   2023-12-03 08:15:00

Links booklink

Contact Us: admin [ a t ] ucptt.com