Merhaba Arkadaslar,
Bu yazimda onceki 8 yazimin ozeti seklinde olacaktir. Akilda tutulmasi gereken trickleri maddeler halinde paylasacagim.
Identifier(Belirtec)
- Javada belirtecler harf, underscore (_) ve $ isareti ile baslayabilir. Rakam ile baslayamaz.
- Ilk karakterden sonra rakam da kullanilabilir.
- Isimlendirmede uzunluk sinirlamasi yoktur.
- Java da camelCase yapisina uygun olarak isimlendirme kullanilir.
Deklarasyon Kurallari
- Bir kaynak dosya (source file) sadece bir tek public class icerebilir.
- public class ile kaynak dosyanin adi ayni olmak zorundadir.
- Bir sinif sadece tek bir package ifadesine sahip olabilir , bir den fazla import kullanilabilir.
- Bir kaynak dosya bir den fazla public olmayan sinif icerebilir.
Class Access Modifiers ( Sinif Erisim Duzenleyicileri)
- Java da 3 adet access modifier vardir ; public , protected, private
- Java da 4 adet access level vardir. public, protected, private ve default
- Siniflar public veya default access e sahip olabilir.
- Default access e sahip sinifa ayni paket altindaki tum siniflardan erisim saglanabilir.
- public sinifa diger paketlerde bulunan siniflardan da ulasim saglanabilir.
Class NonAccess Modifier
- Siniflar sunlari da alabilir ; final , abstract , strictfp
- Bir sinif final ve abstract olamaz. Bu iki anahtar kelime hic bir sekilde yan yana gelemez.
- final sinif kalitilamaz
- abstract siniftan obje olusturulamaz.
- abstract sinif hem abstract hem normal (concrete) metota sahip olabilir.
Interface (Arabirim)
- interface (arabirim) bir sinifin ne yapacagini soyleyen fakat nasil yapacagini soylemeyen bir kontrattir.
- interface , herhangi bir sinif tarafindan implements edilebilir. Burada kalitim agaci yapisi onemsizdir, birbiriyle alakasiz iki sinif ayni interface i implement edebilir. Arabirimlerin gucu buradadir.
- Bir interface (arabirim) sadece abstract metotlara sahip olabilir.
- interface metotlari varsayilan olarak public ve abstractir .
- interface degiskenleri public, static ve finaldir. Yani degiskenden ziyade sabittir (constant)
- Bir sinif sadece bir tek sinifi kalitabilir (extends) fakat birden fazla interface’i implement edebilir.
- interface(arabirim) birden fazla interface’i kalitabilir (extends)
- interface baska bir interface ‘i implements edemez.
- abstract bir sinif bir interface ‘i implements edebilir fakat interface ‘in metotlarini override etmek zorunda degildir.
Member Access Modifier
- Metotlar ve instance degiskenler “member” olarak bilinirler.
- Sinif uyeleri public, protected, default ve private erisim seviyelerinde olabilirler.
- Eger bir sinif bir sinifa erisemiyorsa, bu sinifin uyelerine de erisemez.
- public uyelere farkli bir paketten de ulasilabilir.
- this anahtar kelimesi , hali hazirda calisan nesneyi temsil eder.
- private uyelere sadece sinif icerisinde ulasilabilir.
- private uyeler alt siniflardan gorulemezler , dolayisiyla private uyelere kalitilmazlar.
- default ve protected uyeler arasinda fark kalitim durumunda ortaya cikmaktadir.
- default uyelere sadece ayni pakette bulunan siniflardan ulasim soz konusudur.
- protected uyelere hem ayni pakette bulunan siniflardan hem de kalitim aracigiliyla farkli pakette bulunan alt siniftan erisim mumkundur.
Local Variables ( Yerel Degiskenler)
- Local (method,automatic veya stack olarak da isimlendirilir) degiskenler access modifier almazlar.( public, protected, private )
- Local degiskenler sadece final anahtar kelimesini kullanabilirler.
- Local degiskenlere varsayilan olarak deger atanmaz bu nedenle kullanilmadan once mutlaka ama mutlaka deger atamasi yapilmalidir.
Non Access Modifiers – Members
- final metotlar, alt sinif tarafindan override edilemez.
- abstract metotlar noktali virgul ile biterler
- Bir sinif bir adet abstract metoda sahipse abstract olarak tanimlanmalidir.
- Bir abstract sinif hem abtract hem abstract olmayan metot tanimlayabilir.
- abstract metotlar private ve final olamazlar. Cunku abstract bir sinif kalitilmak icin vardir, private ve final alanlar kalitilamazlar.
- sychronized anahtar kelimesi sadece metotlar ve kod bloklari icin kullanilabilir.
- sychronized metotlar public, protected, private, static, final olarak da tanimlanabilir.
- native , sadece metotlar icin kullanilabilir.
- strictfp , sinif ve metotlar icin kullanilabilir.
Var-Args
- Bir metot tanimlamasinda parametre olarak tanimlanan degisken, 0 veya 1 veya 2 … 3…5 arguman alarak cagirilabilir.Bu yapi Javada Var-Args ile kurulabilir.
- Bir var-args yapisi sadece tek bir var-args kabul eder. method1(int …x)
- Hem var-arg hem normal degisken de kullanilabilir fakat var-args sonda olmalidir.
Variable Declaration (Degisken Tanimlamasi)
- Instance variable , access modifier alabilirler. final veya transient olarak tanimlanabilirler.
- Instance variable static, abstract, syncronized, native, strictfp olarak tanimlamazlar.
- Local degiskenle instance variable ayni isme sahip olabilir buna golgeleme (shadowing) denir.
- final degiskenlere tekrar bir deger atamasi yapilamaz.
- Java da final object diye bir sey yoktur. Bir object referans degiskeni final olarak tanimlanabilir.
- transient , sadece instance variable icin kullanilabilir.
- volatile, sadece instance variable icin kullanilabilir.
Array Declaration (Dizi Tanimlamasi)
- Array (dizi) primitive veya obje tutabilirler. Fakat arrayin kendisi bir objedir.
- Array tanimlarken sol tarafta boyut belirleme derleme hatasina neden olur.
Static Degiskenler ve Metotlar
- static degiskenler ve metotlar ilgili sinifin bir objesi ile baglantili degildir.
- static degiskenin sadece bir tek kopyasi vardir.
- static metotlar , static olmayan uyelere direkt olarak erisemezler.
Enum
- Bir enum, liste seklinde tanimlanan , sabit degerlerden olusan, bir yapidir.
- Bir enum, String veya int turunde degildir. Her bir enum , sabit degeri enum tipindedir.
- Bir enum , bir sinif icerisinde veya disarisinda tanimlanabilir. Metot icerisinde tanimlanamaz.
- Sinif disarisinda tanimlanan enum , static , final abstract protected veya private olamaz.
- Enumlar, yapilandirici metot ve degisken tanimlayabilir.
- Her enum values() isminde static metoda sahiptir ve enum in sabit degerlerini dondurur.