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

Inicjalizacja zmiennej w podklasie

Object Storage Arubacloud
0 głosów
179 wizyt
pytanie zadane 10 września 2016 w Java przez SebekMakaron Obywatel (1,290 p.)

Witam Mam 3 klasy dziedziczone oto hierarchia:

Nadklasa

Podklasa - dziedziczy z Nadklasa

Podklasa podklasy- dziedziczy z Podklasa

1.W nadklasie inicjalizuję 3 zmienne prywatne poprzez konstruktor.

2.W konstruktorze podklasy inicjalizuję konstruktor nadklasy zapisem:

super(int zmienna1, itd.);

a także dodaje kolejna zmienna prywatna i inicjalizuję ja w konstruktorze ale juz poza instrukcja "super".

3. Tworze podklasę podklasy i również inicjalizuję 3 zmienne prywatne za pomocą instrukcji "super" w konstruktorze.

Moje pytanie dotyczy teraz jak zainicjalizować zmienna stworzoną w "podklasie" ponieważ instrukcja "super" nie działa, pojawia się błąd dotyczący tego iż ta zmienna jest prywatna.

Czy w takiej sytuacji jedynym wyjściem jest ustawienie zmiennej stworzonej w "podklasie" jako protected i wtedy będę miał dostęp z poziomu podklasy podklasy do tej zmiennej?

2 odpowiedzi

+1 głos
odpowiedź 10 września 2016 przez mbabane Szeryf (79,280 p.)
wybrane 11 września 2016 przez SebekMakaron
 
Najlepsza

no ewentualnie mozesz stworzyc setter i getter do zmiennej prywatnej nadklasy i tym sposobem ustawiac, ale wowczas nie bedizesz mial bezposredniego dostepu do tej zmiennej,

A jesli chcesz zeby dzialalo z instrukcja super to musisz utworzyc alternatywny konstruktor ktory bedzie przyjmowal odpowiednie parametry (instrukcje super nalezy wywolywać zawsze jako pierwsza):

public class NadKlasa
{
    private int pole;
    
    public NadKlasa()
    {    
    }

    public NadKlasa(int pole)
    {
        this.pole = pole;
    }
}

class PodKlasa extends NadKlasa
{
    
    private int polePodKlasy;
    
    public PodKlasa(int polePodklasy)
    {
        this.polePodKlasy = polePodklasy;
    }
    
    
    public PodKlasa(int polePodKlasy, int poleNadKlasy)
    {
        super(poleNadKlasy);
        this.polePodKlasy = polePodKlasy;
    }
}

class PodKlasaPodKlasy extends PodKlasa
{
    public PodKlasaPodKlasy()
    {
        super(12, 15);
    }
}

 

+1 głos
odpowiedź 10 września 2016 przez MichuDev Pasjonat (20,300 p.)
edycja 10 września 2016 przez MichuDev

Nie możesz pobrać zmiennych prywatnych z obiektu klasy jeśli twój kod nie należy do tej klasy, lub nie używa refleksji (java.lang.reflect).

W języku Java mamy 4 kwalifikatory dostępu:

  • Domyślny (nic nie piszemy), daje dostęp wewnątrz klasy, klasom w danym pakiecie.
  • Prywatny (private), daje dostęp do pola tylko danej klasie.
  • Chroniony (protected), daje dostęp do pola tylko tej klasie, klasom w danym pakiecie, oraz tym co dziedziczą (przeznaczony do dziedziczenia).
  • Publiczny (public) - dla każdego.

W twoim przypadku użyłbym protected lub getterów i setterów.

Podobne pytania

+1 głos
1 odpowiedź 640 wizyt
pytanie zadane 22 czerwca 2016 w C i C++ przez Burgonys Początkujący (440 p.)
0 głosów
2 odpowiedzi 1,370 wizyt
pytanie zadane 22 sierpnia 2020 w Java przez Bakkit Dyskutant (7,600 p.)
0 głosów
1 odpowiedź 500 wizyt

92,577 zapytań

141,426 odpowiedzi

319,653 komentarzy

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

...