Declare Class Members

Merhaba arkadaslar, bu yazımda class memberlara değinmeye çalışacağım. Daha önce access modifiers’ları class declarasyonunda görmüştük. Yine onlara biraz bakacağız.

Class member ; method ve instance(non-local) ‘lerden oluşur. Memberlar access ve non-access modifiers alabilirler.

Daha önce class declarasyonunda access modifiers olarak public ve default alabiliceğini söylemiştik. Member ise 4 access modifiers’a da sahip olabilir. Bunlar; public, private, protected, default.

Yine class declarasyonunda accees modifiers’ı açıkça belirtmediğimizde default acces level’a sahip olduğu gibi memberlarda da durum aynıdır.

Member için access modifiers’ı genelde şu 2 durum için kullanırız;

  1. Diğer sınıflar tarafından hangi method yada instance variable’lara ulaşılabileceğini belirlemek için.
  2. Subclass’ın hangi method ve instance variable’leri kalıtacağını belirlemek için.

Not : Bir sınıfa ulaşılamıyorsa o sınıfın memberlarına da ulaşılamaz. Sınıf erişilebilirliniği member erişilebilirlinden önce gelir.

 

public members;

public işaretli bir member’a hangi pakete ait olduğuna bakılmaksızın heryerden erişilebilinir. public olan bir member inheritance içerisinde subclass’lar tarafından kullanılabilinirdir.

private members;

private member’a class dışından ulaşılamaz. private member inheritance dışındadır. subclass, süperclass’daki private membera erişemez. Süper class’daki private method ile aynı isimde method barındırabilir subclass. Ancak bu override değildir!. private memberslar sadece kendi sınıfı içerisinde visible’dır. Visible olmayan bir method override edilemez.

* İnstance variable’lar public olabilir , yanlız pratikte pek doğru değildir. Genelde instance variable private yada protected ile modify edilmelidir.(Encapsulation) Korunan variable’lara public olan methodlar üzerinden erişilmelidir. JavaBeans isimlendirme standartlarına uymalıyız. Hebele hubele gibi instance ve method ismi yazmamalıyız

* private olan instance değişkenine public olan get/set methodları üzerinden ulaşmalıyız.

Bir örnekle bakalım;

 

 

 

* Görüldüğü gibi private olan methoda sınıf dışından ve alt sınıf tarafından ulaşamamaktayız.

Protected and Default acess

Protected ve default access modifiers birbirine çok benzerdir. Aradaki fark ise inheritance da ortaya çıkar. default(package-level) access’e sahip method ve instance variable’ler aynı paket altındaki diğer sınıflar tarafından erişilebilinir. protected access ise buna ek olarak inheritance sayesinde farklı paketler altından da erişilebilinir.

* Yukarıdaki örnek üzerinden devam edelim; Roo class’ına protected ve default method ekleyelim.

Şimdi de UseRoo sınıfında bu methodları çağıralım;

* Aynı paket altındaki UseRoo sınıfından protected ve default methodları çağırabildik.

* Farklı paketten bir bakalım;

* Farklı paketler altından inheritance ile protected methoda ulaşabildik. Ancak default methoda farklı paketteki sınıf tarafından ulaşamadık.

Not : protected olan bir instance variable farklı paketlerden sınıf referansı ile ulaşılamaz. Örneğin;

* Farklı paketten Süperclass nesnesi ile protected değişkene ulaşamayız. Subclass farklı pakette ise protected member sadece inheritance ile visible olur.!

Local Variables and Access Modifiers

Local değişkenlere access modifiers uygulanmaz. Local değişkenler sadece ama sadece final alabilirler. 

Access modifiers için şu tabloyu hafızada tutmak güzel olucaktır.

2014-12-29 21:55:14

Nonaccess Member Modifiers

Access modifiers’ı diğer sınıflar tarafından method ve instance değişkenlerin visible/invisible durumları için kullanmıştık. Nonaccess modifiers ise daha çok kullanıldığı (method/instance) yere göre özellik katar.

final methods : Methodlar final olarak tanımlanabilir. final tanımlanan method override edilemez. Edilmesi halinde compile error oluşacaktır.

final argüman : final argümanlar local değişkenler gibi düşünülebilinir. final olan argümana yeniden değer atanamaz. final değişken değerini korur(reference dahil).

Abstract Methods : Abstract olan methodun gövdesi yoktur. {} yerine ; ile biter. Abstract olan method somut olan ilk subclass tarafından implemente edilmelidir. Subclass abstract class ise bu opsiyoneldir. Class içerisinde bir tane dahi abstract olan method var ise class tanımınında abstract kelimesi yer almalıdır.

Synchronized Methods : Synchronized methoda bir anda yanlız tek Thread tarafından ulaşılabileceğini gösterir. Synchronized konusuna daha sonra değiniceğim. Şuan sadece methodlara uygulandığını bilelim. Variable ve class’lara uygulanmaz. Synchronized ile access modifiers’ları beraber kullanabiliriz.

Native Methods : Daha çok Java içerisinde C dili kodlarını yazmaya yarayan method declarasyonudur. Pek değinemeyeceğim ama şunları bilmek yeterlidir bence : native keywordu ile yazılır ve sadece methodlara uygulanabilir. {} yerine ; ile biter.

Strictfp Methods : Class declarasyonunda strictfp modifierse değinmiştim. Hatırlarsanız sınıf ve methodlara uygulanabilinirdi. Methodlara uygulandığında ise IEEE 754 standartlarına uygun floatin-point işlemlerinin yapılmasını sağlar.

 

Constructor Declarations

Bir obje oluşturduğumuzda ilk olarak constructor’un çağrıldığını biliyoruz. new ile yeni bir ojbe oluşturduğumuzda uygun constructor çağrılır.

  • Constructor, sınıf ismi ile aynı isme sahiptir.
  • Asla ama asla return tipi yoktur(void bile olamaz).
  • Constructor, access modifiers alabilir.
  • static, final ve abstract olamaz.
  • Her sınıf default constructor’a sahiptir.

* Daha sonra constructor konusuna OOP yazılarında detaylıca değiniceğim.

* Yazımı burada sonlandırıyorum arkadaşlar.

* Mutlu kalın , kodla kalın ve bol bol çay için

~ Alican Akkus

1141 Total Views 1 Views Today