Dyskusja:Interfejs (programowanie obiektowe)
Wygląd
Wycięte z interfejs (Java)
[edytuj kod]'''Interfejs''' – w [[obiektowy język programowania|obiektowych]] [[język programowania|językach programowania]] [[C Sharp|C#]] i [[Java]] specjalna konstrukcja ([[typ (informatyka)|typ]]) podobna do [[klasa (programowanie obiektowe)|klasy]] (dokładniej do [[klasa abstrakcyjna|klasy abstrakcyjnej]]), która posiada jedynie deklaracje [[metoda (programowanie obiektowe)|metod]] bez podawania ich implementacji. Interfejs służy jedynie temu, aby klasy mogły go implementować, a więc podawać implementacje wszystkich jego metod. Zaletą interfejsów jest to, że o ile klasa może [[dziedziczenie (programowanie obiektowe)|dziedziczyć]] tylko po jednej klasie, to może implementować dowolnie wiele interfejsów. =====Przykład===== interface Figura { // deklaracje interfejsu double pole(); // deklaracja metody interfejsu } class Kolo implements Figura { // implementacja interfejsu private double promien; Kolo( double promien ) { this.promien = promien; } public double pole() { return 3.14 * promien * promien; } } class Kwadrat implements Figura { // implementacja interfejsu private double bok; Kwadrat( double bok ) { this.bok = bok; } public double pole() { return bok * bok; } } public class Program { public static double obliczPole( Figura obj ){ return obj.pole(); } public static void main( String[] args ) { // Figura f = new Figura(); // niemożliwe: Figura jest interfejsem Kolo ko = new Kolo( 2 ); Kwadrat kw = new Kwadrat( 2 ); System.out.println( obliczPole( ko ) ); System.out.println( obliczPole( kw ) ); } } [[en:Interface (Java)]] ====Zobacz też==== *[[Klasa (programowanie obiektowe)]]
Kompletnie niezrozumiały artykuł
[edytuj kod]Uważam, że artykuł jest kompletnie niezrozumiały. Dzięki słowom kończącym się na -cja (implementacja, hermetyzacja) nie staje się mądrzejszy.
- Po pierwsze: do czego służy interfejs? Jakie mam z niego korzyści?
- Po drugie: co to znaczy, że interfejs jest abstrakcyjną reprezentacją klasy? Czy to znaczy, że jest to deklaracja klasy, ale bez opisu wewnętrznych metod? Po co robić takie coś?
- Po trzecie: Może jakiś przykład?
Pozdrawiam w.
Usunięty i przywrócony fragment o klasach abstrakcyjnych
[edytuj kod]Cały fragment jest praktycznie nie na temat, a jego kluczowy fragment Jeśli w klasie abstrakcyjnej definiowane będą kolejne metody to może dojść do sytuacji, kiedy wszystkie ze zdefiniowanych metod klasy są metodami wirtualnymi - wówczas mamy już do czynienia z interfejsem jest zupełnie błędny. royas (dyskusja) 03:25, 29 maj 2012 (CEST)
- Sam miałem poważne wątpliwości co do poprawności i związku z tematem w tym fragmencie, ale ostatecznie to zostawiłem, nie będąc w 100% pewnym. Cieszę się, że nie byłem odosobniony, dlatego teraz potwierdzam zdanie royasa. Interfejs to nie to samo, co klasa abstrakcyjna, w której wszystkie metody są wirtualne, choć technicznie może się w niektórych językach do tego sprowadzać. --Zyx (dyskusja) 17:52, 29 maj 2012 (CEST)
Hermetyzacja i dostęp do metod w interfejsach
[edytuj kod]- "Wszystkie zadeklarowane metody w interfejsie są publiczne, natomiast metody zadeklarowane w klasach mogą być publiczne lub chronione."
W nowszych wersjach Javy bodajże od wersji 8 albo 9 można stosować metody prywatne, domyślne i dowolne metody statyczne. 193.109.244.28 (dyskusja) 16:19, 9 lut 2025 (CET)