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)
}