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

Polimorfizm klas, błąd [C#]

Object Storage Arubacloud
0 głosów
202 wizyt
pytanie zadane 28 listopada 2018 w C# przez profesorek96 Szeryf (91,420 p.)

Witam was.

Mam dwie klasy, klasę osoba i klasę student. Klasa osoba dziedziczy z klasy student.

 class Osoba
    {
        public string imie { get; set; }
        public string nazwisko { get; set; }
        public Osoba(string i,string n)
        {
            imie = i;
            nazwisko = n;
        }
    }

 

class Student:Osoba
    {
        public string nrIndexu { get; set; }
        public Student(string i,string n,string nr):base(i,n)
        {
            nrIndexu = nr;
        }
    }

Cały problem polega na tym że chciałbym stworzyć obiekt klasy Student przypisany do zmiennej typu Osoba. Czy jest to możliwe bez używania klasy abstrakcyjnej?

Kod maina:

class Program
    {
        static void Main(string[] args)
        {
            Osoba a = new Osoba("Jan", "Kowalski");
            Student b = new Osoba("Adam", "Nowak");
            Student c = new Student("Krzysztof", "Los","123");
            Console.ReadKey();
        }
    }

 

1 odpowiedź

0 głosów
odpowiedź 28 listopada 2018 przez adrian17 Ekspert (344,860 p.)
wybrane 29 listopada 2018 przez profesorek96
 
Najlepsza

Cały problem polega na tym że chciałbym stworzyć obiekt klasy Student przypisany do zmiennej typu Osoba

Tak, to po prostu działa.

Osoba d = new Student("Adam", "Nowak", "123");

 

komentarz 28 listopada 2018 przez profesorek96 Szeryf (91,420 p.)
Ok tylko co taki zapis daje mi jak mam i tak tyle pól co w klasie Osoba ?
komentarz 28 listopada 2018 przez adrian17 Ekspert (344,860 p.)
Na przykład to, że możesz przechowywać Studentów w List<Osoba>. Albo przekazać do metody biorącej Osoba.

To jest podstawa polimorfizmu.
komentarz 28 listopada 2018 przez profesorek96 Szeryf (91,420 p.)
No ale takie rozwiązanie powoduje że on nie widzi pól zdefiniowanych w klasie Student która dziewdziczy po klasie Osoba. Wiec co mi z tego jak mam nie pełne dane i nie przechoam całego obiektu Student tylko tyle ile pokrywa sie z klasą Osoba.
komentarz 28 listopada 2018 przez NowyUrzydgownig Mądrala (5,090 p.)
Wtedy jak chcesz sprawdzić, czy osoba jest studentem to używasz operatora 'is'. Następnie możesz to sobie rzutować słowem 'as'. Wtedy masz studenta i możesz odczytać jego nr indeksu.
komentarz 28 listopada 2018 przez adrian17 Ekspert (344,860 p.)

Wiec co mi z tego jak mam nie pełne dane i nie przechoam całego obiektu Student tylko tyle ile pokrywa sie z klasą Osoba.

Przechowujesz cały obiekt, tylko zmienna jest referencją na klasę bazową. Poczytaj o polimorfiźmie. Nie musisz tego używać, jeśli nie potrzebujesz.

 

komentarz 30 listopada 2018 przez profesorek96 Szeryf (91,420 p.)
Dzięki za wytłumaczenie :)

Podobne pytania

0 głosów
1 odpowiedź 84 wizyt
pytanie zadane 16 października 2023 w C# przez kubekszklany Gaduła (3,190 p.)
0 głosów
1 odpowiedź 1,192 wizyt
pytanie zadane 18 czerwca 2019 w C# przez Ramzes Nowicjusz (140 p.)
0 głosów
0 odpowiedzi 139 wizyt
pytanie zadane 1 kwietnia 2017 w C# przez jankustosz1 Nałogowiec (35,880 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 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!

...