Wątek przeniesiony 2016-06-09 01:18 z C# i .NET przez somekind.

Dziedziczenie po klasach

0

Mam pewnien problem z klasami, dwie klasy jedna dziedziczy po drugiej np.
tworzę sobie obiekty klasy pierwszej

List<Person> Plist = new List<Person>();
Plist.Add(new Person("John","Nowak",new DateTime(2002,01,01));

i teraz drugiej, która dziedziczy po tej pierwszej :
Address ad1 = new Address("New York","Martin Ave");

i teraz jak połączyć te dane ze sobą , chodzi mi o to , że jeżeli wywołał metodę zaimplementowaną w drugiej klasie to obok adresu wypiszę mi Plist[0]. Jest ktoś w stanie pomóc, lub ewentualnie podesłać jakiś link gdzie jest to opisane ;) ?

0

Eeee... czy u ciebie Address dziedziczy po Person?

0

@some_ONE tak.

0

No to, to jest błędem.

To powinna być kompozycja, osoba posiada jakiś adres. W twoim rozwiązaniu wychodzi na to, że adres jest osobą.
Zamiast tego durnego dziedziczenia w klasie Person dodaj pole typu Address i problem sam się rozwiąże.

0

@some_ONE w sensie do konstruktora w Person dodaje pole typu Address?

0

Tak, i do klasy jako właściwość.

0

@some_ONE Mógłbyś mnie nakierować jak to zrobić ? Niestety nie mam pomysłu na to.

1
class Person
{
   public string Name {get; set; }
   //reszta twoich wlasciwosci
   public Address Address {get; set; }

   public Person(..., Address address)
   {
      Address = address;
   }
} 
0

@some_ONE
Dziękuje zrobiłem tak i działa, tylko jak teraz to wywołać w main ?
Wyświetla mi cały czas coś takiego:

John Nowak new DateTime(2002,01,01) ConsoleApp.Address

0

Konstruktor?

new Person("John","Nowak",new DateTime(2002,01,01), new Address("New York","Martin Ave"));

0

@some_ONE no dokładnie tak mam, tylko jak wywołać żeby to się wyświetliło na ekranie, dodałem sobie metode w Person, ale na ekranie jest tylko Name i Surname bez zawartości klasy drugiej.

0

No np. nadpisz metodę ToString() w klasie Address,albo ręcznie wyświetlaj właściwość po właściwości.

1 użytkowników online, w tym zalogowanych: 0, gości: 1