Sobes.tech
Junior — Middle

Jakie cechy łączą klasy i interfejsy w programowaniu obiektowym?

sobes.tech AI

Odpowiedź od AI

Klasy i interfejsy w programowaniu obiektowym dzielą kilka wspólnych cech:

  • Abstrakcja: Oba pozwalają opisywać abstrakcyjne typy danych, ukrywając szczegóły implementacji.
  • Definicja zachowania: Zarówno klasy, jak i interfejsy określają zestaw metod, które muszą być zaimplementowane.
  • Polimorfizm: Poprzez klasy i interfejsy można realizować zachowania polimorficzne, umożliwiając korzystanie z obiektów różnych typów w jednolity sposób.
  • Typizacja: Oba służą do określania typów, które można używać do deklarowania zmiennych i parametrów funkcji.

W Go interfejsy definiują zestaw metod, a nie ma klasy jako takiej, ale struktury z metodami pełnią rolę klas. Interfejsy opisują zachowanie, a struktury — dane i implementację.

Przykład w Go:

// Interfejs
 type Reader interface {
     Read(p []byte) (n int, err error)
 }

// Struktura z metodą implementującą interfejs
 type File struct {}

 func (f File) Read(p []byte) (n int, err error) {
     // implementacja
     return 0, nil
 }

 func main() {
     var r Reader = File{}
     r.Read(nil)
 }