Takie same zmienne w klasie pochodnej i bazowej

0

Witam! Zastanawiam się, co się stanie, jeżeli klasa bazowa posiada już zmienną o nazwie takiej jak pochodna np.

public class owoc
{
     public owoc(int liczba)
     {
          this.liczba = liczba;
     }
     public int liczba {get; protected set; }
}
public class jablko : owoc
{
     public jablko(int liczba) : base(liczba)
     {
          this.liczba = liczba;
     }
     public int liczba {get; private set; }
}

teraz, jeżeli użyję zmiennej Liczba użyję jej w klasie jablko czy w klasie owoc czy te zmienne staną się jedną zmienną? Ale nie mogą być jedną, ponieważ mają różne modyfikatory. Zastanawiam się, ponieważ na zdrowy rozsądek powinienem mieć konflikt nazw, a wszystko mi się ładnie kompiluje

1

Po pierwsze to nie są zmienne tylko właściwości.
Po drugie masz przecież konflikt nazw - kompilator wyświetla Ci ostrzeżenie, że jablko.liczba ukrywa owoc.liczba.

2

Tak się już przyjęło, że nazwy klas,metod i właściwości piszemy z dużej litery. Nazwy zmiennych lokalnych , pól - z małej litery . Jeśli chcemy ukryć jakąś odziedziczoną składową to używamy modyfikatora - new , żeby nie było wątpliwości ..

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