• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C#, słowo kluczowe "new"

Object Storage Arubacloud
0 głosów
626 wizyt
pytanie zadane 21 sierpnia 2019 w C# przez Marcin Knapik Nowicjusz (240 p.)
zmienione kategorie 21 sierpnia 2019 przez Patrycjerz
Mam takie pytanie, przyjmijmy że mam 3 klasy: Klasa1, Klasa2, Klasa3.

W dodatku Klasa2 : Klasa1 oraz Klasa3: Klasa2 (dziedziczenie),

I niech mamy w kazdej z klas taka sama metode publiczna (ta sama nazwa w wszystkich 3 klasach, np. public void x()) wyswietlająca na ekran krótki text by człowiek wiedział z jakiej klasy metoda została wywowała.

Czy jeśli w Klasa2 oraz Klasa3 dodam do deklaracji metody słowo kluczowe "new" to czy cos się zmieni oprócz tego ostrzeżenie które się wyswietla na dole (Visual Studio)?

I jeszcze jedno pytanie, powiedzmy że w Klasa3 w jakies metodzie wewnarz tej klasy bede umial wywowac ta metoda x() która wyswietli to co zostalo zadeklarowane w np. Klasie1 (nie mowie to specjalnie o stworzeniu obiektu Klasy1, nie o to mi chodzi, uczę sie dziedziczenia)? Wiem ze jest słowo kluczowe base. Wywołując te slowo "base.x()", w Klasa3 dostaje to co zostało zadeklarowane w Klasa2. Nie mogę wyświetlic  tego co znajduje sie w Klasa1? Czy zawartosc metody x() z KLASA1 zostało juz utracone w drodze dziedziczenia i nadpisywania?

Pozdrawiam i przepraszam że nie umiem napisać zrozumiale... :D
komentarz 21 sierpnia 2019 przez Marcin Knapik Nowicjusz (240 p.)
Chodzi o jezyk C#, niezauważyłem że wybrałem "C i C++"
komentarz 21 sierpnia 2019 przez Patrycjerz Mędrzec (192,320 p.)
Pytanie można edytować, naciskając przycisk z ikoną ołówka.

2 odpowiedzi

+1 głos
odpowiedź 21 sierpnia 2019 przez jankustosz1 Nałogowiec (35,880 p.)
wybrane 22 sierpnia 2019 przez Marcin Knapik
 
Najlepsza
new jedyne co robi to informuje kompilator że zdajesz sobie sprawę że nadpisujesz metodę klasy bazowej, aby nie wyświetlał warningów.

Odnośnie drugiego pytania, zostało to utracone, aby dało się dostać do tej metody, trzeba by w Klasa2 zrobić metodę wywołującą x z base, aby dało się to wywołać z Klasa3. Jak się nad tym pomyśli to nawet jest to dobrze, że da się zablokować dostęp do niektórych metod "przodków".
komentarz 21 sierpnia 2019 przez Rafajah Bywalec (2,090 p.)
Nie po to dziedziczysz żeby z klasy któregoś pokolenia wywoływać metody ileś tam pokoleń wstecz, które nadpisałeś. Jeśli musisz zrobić coś takiego to znaczy, że klasy są źle zaprojektowane i po prostu te metody powinny nazywać się inaczej. Nazwij metodę y zamiast x w Klasa1 i już wszystkie kolejne pokolenia klas będą ją "widziały" i mogły wywołać.

Rozumiem, że pytanie jest czysto teoretyczne bo się tego uczysz ale myślę, że tym bardziej moja uwaga będzie cenna.

jankustosz1, sorry, że komentarz pod Twoim postem ale nie chciałem tego dawać jako odpowiedź bo nią nie jest, a Twoja odpowiedź jest prawidłowa więc dorzucam tutaj coś od siebie :)
komentarz 22 sierpnia 2019 przez Marcin Knapik Nowicjusz (240 p.)
A jeszcze takie krótkie pytanie. Wiem nie więcej jak działa metoda z dodaniem słowa abstract. Gdzieś przeczytałem że virtual to praktycznie to samo co abstract z tą różnicą że w metodzie virtual od razu piszesz ciało fukcji, czy to prawda?
komentarz 22 sierpnia 2019 przez jankustosz1 Nałogowiec (35,880 p.)
Virtual to abstract z defaultowym zachowaniem. Abstract musisz nadpisać, a virtual nie i jak nie nadpiszesz to będzie miał defaultowe zachowanie z klasy bazowej, jeżeli jednak nadpiszesz to będzie działał tak samo jak abstract.
0 głosów
odpowiedź 21 sierpnia 2019 przez niezalogowany
Słowo kluczowe base służy do używania składowych klasy bazowej. W Twoim przypadku Klasa2 jest klasą bazową Klasa3. W Klasa2 masz za pomocą base dostęp do składowych Klasa1.

Podobne pytania

0 głosów
0 odpowiedzi 217 wizyt
0 głosów
0 odpowiedzi 486 wizyt
0 głosów
1 odpowiedź 211 wizyt
pytanie zadane 14 marca 2020 w Java przez Gabel88 Początkujący (430 p.)

92,536 zapytań

141,377 odpowiedzi

319,454 komentarzy

61,922 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...