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 Belirleyici | Aynı Sınıf | Aynı Paket | Alt Sınıf | Her Yer |
|---|---|---|---|---|
private | Evet | Hayır | Hayır | Hayır |
| varsayılan (anahtar kelime yok) | Evet | Evet | Hayır | Hayır |
protected | Evet | Evet | Evet | Hayır |
public | Evet | Evet | Evet | Evet |
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.
Görev
KolayEriş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:privatealan: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 protectedalan:name(String) - aynı paket ve alt sınıflardan erişilebilirpublicalan:school(String) - her yerden erişilebilir
"[studentId] name - Grade grade at school"formatında bir dize döndürenpublicbirgetInfo()metodu ekleyin.Main.java: Bir Student nesnesi oluşturun ve hangi alanlara sınıf dışından doğrudan erişilebildiğini gösterin.schoolalanını doğrudan yazdırın, ardından öğrencinin tüm bilgilerini göstermek içingetInfo()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:
| Belirleyici | Aynı Sınıf | Aynı Paket | Alt Sınıf | Her Yer |
|---|---|---|---|---|
private | Evet | Hayır | Hayır | Hayır |
| varsayılan (anahtar kelime yok) | Evet | Evet | Hayır | Hayır |
protected | Evet | Evet | Evet | Hayır |
public | Evet | Evet | Evet | Evet |
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
}
}
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
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesnelerthis Anahtar KelimesiMetotlarAlanlar (Öznitelikler)Yapıcı MetotYapıcı Metot Aşırı YüklemeÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (extends)super Anahtar KelimesiMetot Geçersiz Kılma (@Override)Yapıcı Metot ZincirlemeObject SınıfıTekli ve Çok Seviyeli KalıtımNeden Çoklu Sınıf Kalıtımı Yok?Özet - Çalışan Hiyerarşisi7Özel Metotlar ve Object Sınıfı
toString() Metoduequals() ve hashCode()clone() MetoducompareTo() ve ComparableComparator ArayüzüÖzet - Özel Sıralama2Erişim Belirleyiciler ve Kapsülleme
Erişim Seviyelerine Genel BakışGetter ve Setter MetotlarıBilgi Gizlemefinal Anahtar KelimesiÖzet - Banka Hesabı Yöneticisi5Polimorfizm
Metot Aşırı Yükleme TemelleriMetot Geçersiz Kılma (Çalışma Zamanı)Upcasting ve Downcastinginstanceof OperatörüSoyut Sınıflar ve MetotlarÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kompozisyon vs KalıtımAgregasyon vs KompozisyonDahili, Yuvalanmış ve Anonim SınıflarEnum'lar ve Enum MetotlarıRecords (Java 16+)Sealed Classes (Java 17+)11Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişSingleton KalıbıFactory KalıbıBuilder KalıbıObserver KalıbıStrategy Kalıbı14Final Meydan Okumaları
E-Öğrenme PlatformuBankacılık SistemiOyun Karakteri GeliştirmeAraç Kiralama Servisi3Sınıf Özellikleri ve Statik Üyeler
Instance ve Statik DeğişkenlerStatik MetotlarStatik BloklarSabitler (static final)Özet - Sayaç ve Utility6Arayüzler ve Soyut Sınıflar
Arayüzlere GirişArayüzleri UygulamaÇoklu Arayüz UygulamaArayüzlerde Default ve StaticSoyut Sınıflar ve ArayüzlerFonksiyonel ArayüzlerÖzet - Ödeme Sistemi9Generics
Generics'e GirişGeneric SınıflarGeneric MetotlarSınırlandırılmış Tip ParametreleriWildcard'lar (?, extends, super)Özet - Generic Container12Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit KalıbıYineleyici Kalıbı