Java Dersleri 4 – Erişim Denetleyicileri (Access Modifiers)

Java Dersleri 4

Java Dersleri 4


Bu dersimizde Java’nın metodlar ve sınıflar üzerinde erişim kurallarını düzenleyen anahtar kelimelerini ve nasıl kullanıldıklarını örnekleriyle öğreneceğiz. Java’da dört adet erişim düzeyi bulunmakla birlikte üç adet erişim denetleyici anahtar kelime vardır. Dördüncü erişim düzeyi ise bu kelimelerin bulunmadiği seviyedir. Erişim kontrolü yazılımda her birimin kendi işine odaklanmasına yardımcı olur. Temelde nesne yönelimli programanın ana unsrlarındandır. Veri kapsülleme, miras ve çok biçimlilik paradigmalarının hayata geçirilmesine olanak tanırlar. Java’da erişim denetleyici anahtar kelimeler şunlardır:

1)Public
2)Protected
3)Private


Bu anahtar kelimelerle işaretlenmemiş her türlü Java yapısı default erişim seviyesine sahip olur ki bu da
dördüncü erişim seviyesidir. Sırasıyla bu seviyeleri ve aralarındaki erişim ilişkilerini açıklamaya çalışalım.

1)Public Erişim Seviyesi
Bu anahtar kelime önüne geldiği sınıfı,değişkeni, methodu diğer bütün kod bloklarından erişilebilir olarak işaretler. Sınıf seviyesinde kullanılabildiği gibi sınıf elemanları seviyesinde de kullanılabilir. Örneğin :

public class FrmVet extends JPanel implements IDataChangeListener, ListSelectionListener {
}

FrmVet sınıfı tanımında kullanılan public anahtar kelimesi bu sınıfın proje kapsamında diğer tüm sınıflar tarafından kullanılabilieceğini belirtir. Bu örnekte ise :

public abstract class QueryManagerBase {

	public ResultSet runSelectQuery(String query) throws SQLException
	{
		Statement s = (Statement) connection.getConnection().createStatement();
		return (ResultSet) s.executeQuery(query);
	}

}

public anahtar kelimesi runSelectQuery(String query) metodunu diğer sınıflar tarafından kısıtlama olmadan erişilebilir olarak işaretlemiştir.

2)Protected Erişim Seviyesi
Bu erişim seviyesi sınıflara uygulanamamakla birlikte metodlara ve sınıf değişkenlerine uygulanır. Önünen geldiği elemana
“alt sınıflardan” ve “aynı pakette bulunan sınıflardan” ulaşılmasına izin verir. Örneğin :

public abstract class QueryManagerBase {

	protected IDatabaseConnection				connection;
	protected ArrayList<idatachangelistener>	dataChangeListeners;
}

bu sınıftaki connection ve dataChangeListeners değişkenlerine ancak QueryManagerBase sınıfının alt sınıflarından yada bu
sınıfla aynı pakette yer alan sınıflardan erişilebilir. Yukarıdaki sınıfın alt sınıfı olan bu örnekte kullanımı görelim :

public class QueryManager extends QueryManagerBase {
public boolean addClient(EntityClient client) throws SQLException
	{
		java.sql.PreparedStatement ps = connection.getConnection()
				.prepareStatement(_insertClientQuery);
		ps.setString(1, client.getAd());
		ps.setString(2, client.getSoyad());
		ps.setString(3, client.getAdres());
		ps.setString(4, client.getTelefonEv());
		ps.setString(5, client.getTelefonCep());
		ps.setString(6, client.getAciklama());
		int result = ps.executeUpdate();
		notifyDataChangeListeners(DataChangeKey.CLIENT);
		return result == 1;
	}
}

Bu örnekte QueryManager sınıfı QueryManagerBase sınıfının alt sınıfıdır. QueryManagerBase sınıfında protected olarak işaretlenen

connection değişkeni java.sql.PreparedStatement ps = connection.getConnection()
				.prepareStatement(_insertClientQuery);

satırında kullanılmıştır.

3)Private Erişim Seviyesi
Protected erişim seviyesine benzer olarak sadece sınıf elemanlarına yani sınıf değişkenlerine ve metodlarına uygulanabilir,
sınıf seviyesinde uygulanamaz. İşaretlediği elemanı sadece sınıf içerisinden erişilebilir kılar. Yani ne aynı paketteki diğer
sınıflar ne de alt sınıftan bu elemanlara erişilemez. Örnek :

public class MYSQLDatabaseConnection implements IDatabaseConnection {

	private Connection mysqlConnection;

}

Buradaki MYSQLDatabaseConnection sınıfına ait olan mysqlConnection değişkeni private olarak işaretlenmiş yani sadece sınıf elemanları
tarafından kullanılabilir, MYSQLDatabaseConnection sınıfı haricinde kullanılamaz.

4) Default Erişim Seviyesi
Java’da sınıf seviyesinde veya sınıf üyeleri seviyesinde herhangi bir erişim belirleyici anahtar kelimenin kullanılmadığı durumdur.
Bu tip sınıflara ve elemanlara kullanıldıkları sınıf içerisinden ve aynı paketteki diğer sınıflardan erişilebilir.

Anlattıklarımızı aşağıdaki tabloda özetleyebiliriz:

Erişimci Sınıf Paket Alt Sınıf Diğer
Public Erişim Var Erişim Var Erişim Var Erişim Var
Protected Erişim Var Erişim Var Erişim Var Erişim Yok
Default Erişim Var Erişim Var Erişim Yok Erişim Yok
Private Erişim Var Erişim Yok Erişim Yok Erişim Yok

Kaynaklar:

İlgili Yazılar:

  1. Java Dersleri 6 – Arayüzler ve Gerçeklenmesi (Interface and Implementation) Nesne odaklı programlamada arayüzler sınıfların dış dünyaya açılan kapılarıdır. Bir...
  2. Java Dersleri 5 – Kalıtım (Inheritance) Bu derste Java’nın nesne yönelimli programlamanın temeli olan kalıtım(Inheritance) kavramını...
  3. Java Dersleri 16 – Enum Yapısı Java da enum yapıları 1.5 versiyonuyla birlikte gelmiştir. Bu versiyondan...
  4. Java Dersleri 17 – JDBC API (Veritabanı Bağlantısı) Bu makalede Java’nın veritabanı kabiliyetlerinden bahsedeceğim. Java’nın tüm veritabanlarına ulaşmak...
  5. Java Dersleri 7 – Çok Biçimlilik (Polymorphism) Bu dersimizde Java’nın nesne odaklı programlamanın olmazsa olmazlarından çok biçimliliği...

Fikrin geldiyse buraya yaz


[ Ctrl + Enter ]