Loading:

Promocja Helion.pl

Definiowanie interfejsu - szablon dla innych klas - interface , implements [AS 2]

Interface jest to szkielet, bądź struktura dla innych klas które używają tej klasy jako interfejs. Interfejs deklaruje jakie funkcje muszą się znajdować w klasach które ją używają.

 

Klasy pochodne mogą mieć też inne funkcji, metody ale tylko wtedy jeśli wykorzystały wszystkie funkcjie z interfajsu.

 

Aby utworzyc swój interfejs wystarczy polecenie interface nazwaInterfejsu { }, żeby natomast klasy korzystały z takiego interfejsu należy dodać po class oraz nawie klasy 2 wyarazy po spacjach: implements nazwainterfejsu .

 

Funkcje z interfejsu moga być nadpisywane przez każdą z klas w razie konieczności, również możliwe jest korzystanie z więcej niż jednego interfejsu dla jednej klasy. W takim przypadku należy oddzielić nazwy interfejsów przecinkami.

 

Interjesu również mogą dziedziczyć się nazwajem np możemy mieć jeden ogólny interfejs oraz kilka mniejszych korzystających z jednego dużego jako szkielet. Aby to osiągnąć, należy tuz pod interface nazwainterfejsu dopisać: extends kolejnyInterfejs , składnia jest taka sama jak dla zwykłych klas dziedziczących.

 

Kompatybilność: Flash6+

 

Przykład:

//tworzenie interfejsu
interface Ia {
 function k():Number; // method declaration only
 function n(x:Number):Number; // without implementation
}

// tworzenie klasy która korzysta z interfejsu
class B implements Ia {
//2 funkcje które muszą być w klasie k(), n(x)
 function k():Number {
 return 25;
 }
 function n(x:Number):Number {
 return x + 5;
 }
}
var mvar:B = new B();
trace(mvar.k()); // 25
trace(mvar.n(7)); // 12

// tworzenie kolejnej klasy która korzysta z interfejsu oraz nadpisuje funkcje z interfejsu
class C implements Ia {
 function k():Number {
 return 25;
 }
} // zwróci jednak błąd ponieważ klasa musi implementować każdą funkcję interfejsu

// tworzenie kolejnego interfejsu
interface Ib {
 function o():Void;
}
//implementowanie z więcej niż jednego interfejsu
class D implements Ia, Ib {
 function k():Number {
 return 15;
 }
 function n(x:Number):Number {
 return x * x;
 }
 function o():Void {
 trace("o");
 }
}
mvar = new D();
trace(mvar.k()); // 15
trace(mvar.n(7)); // 49
trace(mvar.o()); // "o"

//interfejs również może dziedziczyć funkcje po innym interfjesie
interface Ic extends Ia {
 function p():Void;
}
//klasa posiadające 2 interfejsy
class E implements Ib, Ic {
 function k():Number {
 return 25;
 }
 function n(x:Number):Number {
 return x + 5;
 }
 function o():Void {
 trace("o");
 }
 function p():Void {
 trace("p");
 }
}



Napisz Artykuł

Listing

niema


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=12&t=2068

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: divix
Ranga: Administrator serwisu Punktów: 38323
Komentarze użytkowników
    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors