Vmesnik
Iz E-študij, proste zakladnice študentskega znanja
- Članek govori o vmesnikih (ang. interface) v Javi.
Java ne omogoča hibridnega vozila z dvojnim dedovanjem, da ne pride do dvoumnosti. Konstruktor super() ne bi nedvoumno deloval.
Vmesnik omogoča, da podedujemo lastnosti iz več razredov na način pri hibridnem vozilu.
Nekateri programski jeziki omogočajo večkratno dedovanje: podrazred
podeduje atribute in metode več kot enega nadrazreda
Vsebina |
Problemi
- atributi in metode v nadrazredih imajo enaka imena
- super() – klic konstruktorja iz katerega nadrazreda?
Java ne omogoča večkratnega dedovanja
Namesto tega ponuja koncept vmesnika
Razlika med vmesnikom in razredom
Razlika med vmesnikom in razredom:
- vse metode v vmesniku morajo biti abstract
- vsi atributi (če jih ima) morajo biti static final
Vmesnik predpiše metode, ki jih mora implementirati nek podrazred = > predpiše obnašanje podrazreda
Podrazred lahko deduje samo od enega nadrazreda, implementira pa lahko več različnih vmesnikov.
public class Podrazred extends Nadrazred implements Vmesnik1, Vmesnik2
S stališča dedovanja Podrazred
- podeduje atribute in metode razreda Nadrazred
- dodatno deklarira nove atribute in metode
- če mu katera od podedovanih metod ne ustreza, jo lahko redefinira
S stališča implementacije vmesnika Podrazred
- deklarira vse metode, ki so specificirane v vmesnikih Vmesnik1, Vmesnik2
- lahko uporblja atribute (statične spremenljivke), ki so definirani v vmesnikih
Podrazred je razširitev treh tipov: Nadrazred, Vmesnik1 in Vmesnik2
Deklaracija vmesnika
public interface vmesnik1
{
public static final int (KONSTANTA=5);
public abstract void nekaj_naredi();
}
Primerjava: abstraktni razred - vmesnik
Primerjava: abstraktni razred - vmesnik
Enako
- ne moremo generirati objektov abstraktnega tipa ali vmesnika
Različno
- v abs.razredih so lahko samo nekatere metode abstraktne, v vmesniku so vse
- atributi abs.razreda se obnašajo kot spremenljivke objektov, atributi vmesnika pa so statične konstante.
Uporaba abstraktnega razreda
- vnaprej deklariramo znane atribute in metode, ki jih podeduje podrazred: recimo pri igri s kartami metodo mesaj()
Uporaba vmesnika
- vmesnik določa le del značilnosti, ki jih vsak podrazred implementira na svoj način: recimo pri glasbenih instrumentih metodo zaigrajTon()