Kolejne pytanie dotyczące tłumaczenia, może być bardziej teoretyczne, ale jestem ciekawy wyboru projektu. SFNQ:
Dlaczego C # nie pozwala na kontrolowanie kontroli dostępu do metod w interfejsach, takich jak Java? Na przykład w interfejsie C #:
public void Visit(Axiom axiom);
Dziękuję Ci.
Odpowiedzi:
5 dla odpowiedzi № 1Zarówno w języku C #, jak i Javie wszystkie metody interfejsu są publiczne.
W Javie dozwolone jest publiczne słowo kluczowe, które może zaoszczędzić na regułach parsowania. W języku C # publiczne słowo kluczowe zostało uznane za zbędne i zostało całkowicie usunięte z deklaracji interfejsu.
6 dla odpowiedzi nr 2
W języku C # i .Net ogólnie wszystkie metody interfejsu są domyślnie publiczne. Nie ma możliwości ograniczenia ich dostępu.
Zastanów się nad alternatywą, co by to oznaczałomasz chronionego członka w interfejsie? Jak ustanowiłbyś reguły dostępu, aby zezwolić lub zabronić dzwoniącemu dostępu do interfejsu dla konkretnej metody? (Mam na myśli ochronę w sensie C #, a nie Java).
Nawet lepiej, co oznaczałoby prywatność?
4 dla odpowiedzi nr 3
W języku C # wszyscy członkowie interfejsu muszą być publiczni,dlatego nie będzie można dodawać żadnych modyfikatorów widoczności do deklaracji członkowskich. Publiczne słowo kluczowe jest zatem zbędne i nie jest potrzebne (w rzeczywistości, jeśli je uwzględnisz, pojawi się błąd kompilatora).
Interfejs to umowa, w której stwierdza się, że użytkownikzapewni wszystkie funkcje określone w definicji interfejsu. Jeśli pozwolono ci mieć prywatnych członków w interfejsie, nie ujawniałbyś tej funkcjonalności (a zatem naruszyłbyś umowę).