Bu yazımda modifier tiplerinden bahsedecegim. Modifier Javada metod, class veya degisken tanımlamalarında kullanılır. Javada modifierlar ikiye ayrılırlar:
- Access Control Modifiers
- Non-Access Modifiers
Access Control Modifiers
Oluşturulan class,metod ve degiskenlerin erişilebilirligi ile alakalıdır. Erişilebilirlige sahip olanların ise nereden ve nasıl erişilebilir olacagını belirleyebildigimiz yapıdır. Bunlar :
Private: Sınıfa özel değişkenlerdir.
Public: Herkese açık olan değişkenlerdir.
Protected : Extends edenlere türetenlere ve aynı package de olanlara açık olan değişkenlerdir.
Default : Hiçbirşey yazılmazsa aynı pakettekilerin erişebildiği değişkenlerdir.
Defaut modifier ile protected modifier farkı default modifier ile üretilen bir degiskene ancak aynı package de erişilebilir. Protected modifier ile türetilen degiskene ise extend edilen heryerde erişilebilir.
Non-Access Modifiers
Static:
Hem degiskenler hemde metodlar için kullanılabilir. Static degiskenler class degişkeni olarak adlandırılırlar . RAM de hep sabit olurlar. Nesneye özel degişmezler . Her nesne için aynıdır. Örnek olarak bir ögrenci sınıfı için ögrenci sayısı hep aynıdır. Ögrenci sınıfından olusturulan her nesnede degişkenlik göstermezler.
Final :
Classların, metodların ve degiskenlerin impelemte edilmesini sonlandırır.
Final olarak kullanılan classlar ve interfaceler extend edilemezler.
Final degiskenler üretildikleri satırda veya constructor da initialize edilebilirler.
Final degiskenler ve metodlar degiştirilemezler bu sebepten encapsulation a katkı saglanır.
Final classlar extend edilemezler, final metodlar override edilemezler.
Bir metodu final yaparak şunu demiş oluyoruz, bu metod, türetilmiş alt sınıflar içerisindeki diger metodlar tarafından iptal edilemesin (override). Eger bir metod iptal edilemezse o zaman geç
baglama (late binding) özelligi de ortadan kalkar.
Class final olarak tanıtılırsa içerisindeki her metod ve degiskenlerde final olur.
Metod final olarak tanıtılırsa override edilemez ama overload edilebilir. ( Overload compile time da override run time da olur.)
Final kullanarak verimlilik arttırılır. Çünkü karar compile time da verilir. (Hangi metodun kullanılacagı kararı yani polimorfizm yapılmadıgı durumda verimlilik artar.)
Abstract:
Bazı özel class ve metod tanımlamalarında kullanılır.
Abstrac class en az bir tane abstact metod bulundurmalıdır.
Hiçbir şekilde abstract classlardan nesne oluşturamayız. Çünkü içerisinde daha tanımlanmayan metodlarda mevcuttur. Bu sebepten dolayı abstract classlarda constructor yoktur.
Extend edilen abstract classın abstarct olan metodu mutlaka implement edilmelidir.(override)
Synchronized:
Threadlar için kullanılır.
Kaynaklar:
Eline sağlık çok faydalı ve güzel bir anlatım olmuş.
YanıtlaSil