Metoda i zmienna są dostępne dla metod tej klasy ORAZ klas po niej dziedziczących (potomnych). Który modyfikator?
Źle.
private ogranicza dostęp WYŁĄCZNIE do własnej klasy.Dobrze.
protected = własna klasa + klasy dziedziczące.Źle.
static dotyczy przynależności do klasy, nie widoczności.Źle.
public daje dostęp z dowolnego miejsca.Modyfikator
protected udostępnia składowe metodom TEJ klasy ORAZ klasom po niej DZIEDZICZĄCYM (potomnym), ale nie kodowi z zewnątrz. To pośredni poziom między private a public, przydatny, gdy klasa bazowa ma coś udostępnić dziedzicom, lecz ukryć przed światem. Zapamiętaj: protected = „dla mnie i moich potomków”.Pozostałe modyfikatory dają inny zakres.
private zamyka składową WYŁĄCZNIE w jej klasie - klasy potomne już jej nie widzą. public otwiera dostęp wszędzie, bez ograniczeń. static wiąże składową z klasą, a nie z obiektem, i nie dotyczy widoczności. Dostęp dla klasy i jej potomków daje protected.