Odwoływanie się do pól z klasy pochodnej

0

Cześć, mam bardzo prosty problem. Z tym że nie mogę znaleźć odpowiedzi na moje pytanie.
Mam klasę bazową:

    public class Duck
    {
        public IFlyable latanieInterfejs; 
        void wykonajLec()
        {
            latanieInterfejs.fly();
        }
    }

oraz potomka:

  public class OddDuck : Duck
   {
             
   }

Chciałbym w klasie OddDuck odwołać się do latanieInterfejs z Duck i przypisać obiekt klasy Fly:

    class Fly : IFlyable
    {
        void IFlyable.fly()
        {
            int x = 44;
            Console.WriteLine(x);
        }
          
    }

myślałem że:

 latanieInterfejs = new Fly();

przejdzie, ale nie mogę się dostać w żaden sposób do pól z klasy Duck.

1

Nie zrozumiałem o co Ci chodzi ale:

var duck = new OddDuck();
duck.latanieInterfejs = new Fly();
duck.wykonajLec(); 

z tym, że wykonajLec() jak nie podasz modyfikatora widoczności jest prywatne. Spróbuj internal wykonajLec().
Ale z drugiej strony ustawianie ręcznie interfejsów tak prosto w pola jest trochę brzydkie - lepiej to wrzucić w konstruktor.

Co do

myślałem że:
latanieInterfejs = new Fly();
przejdzie, ale nie mogę się dostać w żaden sposób do pól z klasy Duck.

To jak chcesz się dostać z Fly do Duck?

0

Wybacz możliwe że napisałem to zbyt chaotycznie. Chodziło mi o to by nie musieć inicjować obiektów tylko dostać się do pól klasy Duck wewnątrz klasy OddDuck, oraz przypisać do latanieLnterfejs obiekt klasy Fly, np. w ten sposób:

 public class OddDuck : Duck
    {
         latanieInterfejs = new Fly();
    }
1

U mnie działa :P

Ale popracuj nad nazewnictwem, bo to strasznie wygląda:

  • nie mieszaj nazw ang z polskimi,
  • nazwy metod z dużej litery,
0

Dobra, dzięki wielkie, działa :) Błąd faktycznie przez moja nieuwagę i jakiejkolwiek metody w OddDuck.

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