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 belirleyici 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 şu formatta bir dize döndüren getInfo() adında public bir metot ekleyin: "[studentId] name - Grade grade at school"
  • 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.

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: Giriş değerleriyle 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