Dobieranie się do klasy w klasie

0

Witam, szybkie pytanko w C#. Jak odwołać się do metody "Kolor" w klasie "Pies" z głównej klasy "Program".
(Kod jest przykładowy).

 class Zwierze
    {
        class Pies
        {
            public void Kolor()
            {
                Console.WriteLine("czarny");
            }
        }
    }

Stworzenie obiektu klasy "Zwierze" nic nam nie daje, a obiektu klasy "Pies" stworzyć bezpośrednio nie możemy.

0

możesz utworzyć instancję psa tylko z poziomu klasy zwierze bo jest prywatna, dopisz "public" przed "Pies" jeśli chcesz wystawić na zewnątrz

2

ale to złe rozwiązanie - jeśli klasa jest zagnieżdżona to zazwyczaj znaczy że jest przeznaczona do używania tylko w klasie zewnętrznej - inaczej tworzą się wszędzie potworki w programie typu Zwierze.Pies - nie ma to większego sensu. Popularnym użyciem jest stworzenie publicznego interfejsu i metody w klasie nadrzędnej która wystawia instancję zagnieżdżonej klasy jako instancję interfejsu

interface IKoloroweZwierze
{
  void Kolor();
}

class Zwierze
    {
        public IKoloroweZwierze DajPsa()
        {
            return new Pies();
        }

        class Pies
        {
            public void Kolor()
            {
                Console.WriteLine("czarny");
            }
        }
    }

new Zwierze().DajPsa().Kolor();
0

widzę że od ostatniej wizyty się zmieniła składnia na forum ;) mógłby jakiś mod poprawić

0

Widzę że koledze pomyliło się zagnieżdżanie klas z dziedziczeniem klas :)

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