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