Menu
Coddy logo textTech

Przegląd poziomów dostępu

Część sekcji Programowanie obiektowe ścieżki Java w Coddy. Lekcja 10 z 87.

Modyfikatory dostępu określają, skąd można uzyskać dostęp do pól i metod. Java ma cztery poziomy kontroli dostępu.

ModyfikatorTa sama klasaTen sam pakietPodklasaWszędzie
privateTakNieNieNie
domyślny (brak słowa kluczowego)TakTakNieNie
protectedTakTakTakNie
publicTakTakTakTak
public class BankAccount {
    private double balance;      // Tylko ta klasa
    String accountType;          // Domyślnie: tylko w tym samym pakiecie
    protected String owner;      // Ten sam pakiet + klasy pochodne
    public String bankName;      // Dostępne wszędzie
}

private jest najbardziej restrykcyjne — używaj go w przypadku danych wewnętrznych, do których nigdy nie należy uzyskiwać bezpośredniego dostępu. public jest najbardziej otwarte — używaj go w przypadku metod, które muszą wywoływać inne klasy.

Jeśli nie określisz żadnego modyfikatora, Java używa dostępu domyślnego (nazywanego też dostępem na poziomie pakietu). Umożliwia on dostęp tylko w obrębie tego samego pakietu.

class Helper {           // Klasa z domyślnym poziomem dostępu
    void assist() { }    // Metoda z domyślnym poziomem dostępu
}

Wybierz najbardziej restrykcyjny poziom dostępu, który nadal pozwala działać Twojemu kodowi. Chroni to Twoje dane i ułatwia utrzymanie kodu.

challenge icon

Wyzwanie

Łatwy

Zbudujmy system rekordów Student, który pokazuje, jak modyfikatory dostępu kontrolują widoczność w różnych plikach.

Utworzysz dwa pliki, aby uporządkować swój kod:

  • Student.java: Zdefiniuj klasę Student z polami o różnych poziomach dostępu:
    • pole private: studentId (String) — dostępne tylko w klasie Student
    • pole domyślne (bez modyfikatora): grade (int) — dostępne w obrębie tego samego pakietu
    • pole protected: name (String) — dostępne w tym samym pakiecie i w podklasach
    • pole public: school (String) — dostępne wszędzie
    Dodaj konstruktor, który ustawia wszystkie cztery pola, oraz metodę public o nazwie getInfo(), która zwraca ciąg znaków w formacie: "[studentId] name - Grade grade at school"
  • Main.java: Utwórz obiekt Student i pokaż, do których pól można uzyskać bezpośredni dostęp spoza klasy. Wypisz bezpośrednio pole school, a następnie wypisz wynik getInfo(), aby wyświetlić wszystkie informacje o uczniu.

Otrzymasz cztery dane wejściowe: studentId, name, grade i school (w tej kolejności).

Wynik powinien składać się z dwóch wierszy: nazwy szkoły uzyskanej bezpośrednio, a następnie pełnych informacji o uczniu zwróconych przez metodę getInfo().

Spróbuj swoich sił

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Odczytaj dane wejściowe
        String studentId = scanner.nextLine();
        String name = scanner.nextLine();
        int grade = Integer.parseInt(scanner.nextLine());
        String school = scanner.nextLine();
        
        // TODO: Utwórz obiekt Student z podanych wartości
        
        
        // TODO: Wyświetl bezpośrednio pole school (jest dostępne, ponieważ jest publiczne)
        
        
        // TODO: Wyświetl wynik getInfo(), aby pokazać wszystkie informacje o uczniu
        
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Java online