Menu
Coddy logo textTech

Erişim Seviyelerine Genel Bakış

Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 10 / 87.

Erişim belirleyicileri, alanlara ve metotlara nereden erişilebileceğini kontrol eder. Java'nın dört erişim kontrol seviyesi vardır.

Erişim BelirleyiciAynı SınıfAynı PaketAlt SınıfHer Yer
privateEvetHayırHayırHayır
varsayılan (anahtar kelime yok)EvetEvetHayırHayır
protectedEvetEvetEvetHayır
publicEvetEvetEvetEvet
public class BankAccount {
    private double balance;      // Sadece bu sınıf
    String accountType;          // Varsayılan: sadece aynı paket
    protected String owner;      // Aynı paket + alt sınıflar
    public String bankName;      // Her yerden erişilebilir
}

private en kısıtlayıcı olanıdır - bunu asla doğrudan erişilmemesi gereken dahili veriler için kullanın. public en açık olanıdır - bunu diğer sınıfların çağırması gereken metotlar için kullanın.

Herhangi bir niteleyici (modifier) belirtmediğinizde, Java default (paket-özel olarak da adlandırılır) erişimi kullanır. Bu, yalnızca aynı paket içinden erişime izin verir.

class Helper {           // Varsayılan erişim sınıfı
    void assist() { }    // Varsayılan erişim metodu
}

Kodunuzun çalışmasına izin veren en kısıtlayıcı erişim düzeyini seçin. Bu, verilerinizi korur ve kodunuzun bakımını kolaylaştırır.

challenge icon

Görev

Kolay

Erişim belirleyicilerinin farklı dosyalar arasındaki görünürlüğü nasıl kontrol ettiğini gösteren bir Student kayıt sistemi oluşturalım.

Kodunuzu düzenlemek için iki dosya oluşturacaksınız:

  • Student.java: Farklı erişim seviyelerine sahip alanları (fields) olan bir Student sınıfı tanımlayın:
    • private alan: studentId (String) - yalnızca Student sınıfı içinden erişilebilir
    • varsayılan (belirleyici yok) alan: grade (int) - aynı paket içinden erişilebilir
    • protected alan: name (String) - aynı paket ve alt sınıflardan erişilebilir
    • public alan: school (String) - her yerden erişilebilir
    Dört alanın tümünü ayarlayan bir yapıcı (constructor) ve "[studentId] name - Grade grade at school" formatında bir dize döndüren public bir getInfo() metodu ekleyin.
  • Main.java: Bir Student nesnesi oluşturun ve hangi alanlara sınıf dışından doğrudan erişilebildiğini gösterin. school alanını doğrudan yazdırın, ardından öğrencinin tüm bilgilerini göstermek için getInfo() metodunun sonucunu yazdırın.

Dört girdi alacaksınız: studentId, name, grade ve school (bu sırayla).

Çıktınız iki satır olmalıdır: doğrudan erişilen okul adı ve ardından getInfo() metodundan gelen tam öğrenci bilgisi.

Kopya kağıdı

Erişim belirleyicileri, alanlara ve metotlara nereden erişilebileceğini kontrol eder. Java'da dört seviyeli erişim kontrolü vardır:

BelirleyiciAynı SınıfAynı PaketAlt SınıfHer Yer
privateEvetHayırHayırHayır
varsayılan (anahtar kelime yok)EvetEvetHayırHayır
protectedEvetEvetEvetHayır
publicEvetEvetEvetEvet
public class BankAccount {
    private double balance;      // Sadece bu sınıf
    String accountType;          // Varsayılan: sadece aynı paket
    protected String owner;      // Aynı paket + alt sınıflar
    public String bankName;      // Her yerden erişilebilir
}

private en kısıtlayıcı olanıdır - asla doğrudan erişilmemesi gereken dahili veriler için kullanın. public en açık olanıdır - diğer sınıfların çağırması gereken metotlar için kullanın.

Herhangi bir belirleyici belirtmediğinizde, Java sadece aynı paket içinden erişime izin veren varsayılan (paket-özel olarak da adlandırılır) erişimi kullanır:

class Helper {           // Varsayılan erişimli sınıf
    void assist() { }    // Varsayılan erişimli metot
}

Kodunuzun çalışmasına izin veren en kısıtlayıcı erişim seviyesini seçin. Bu, verilerinizi korur ve kodunuzun bakımını kolaylaştırır.

Kendin dene

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Girdileri oku
        String studentId = scanner.nextLine();
        String name = scanner.nextLine();
        int grade = Integer.parseInt(scanner.nextLine());
        String school = scanner.nextLine();
        
        // TODO: Girdi değerleri ile bir Student nesnesi oluşturun
        
        
        // TODO: school alanını doğrudan yazdırın (public olduğu için erişilebilir)
        
        
        // TODO: Tüm öğrenci bilgilerini göstermek için getInfo() sonucunu yazdırın
        
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler