Kaynak Dosya Tanimlamasi
- Javada , her kaynak dosya icin yalnizca bir adet public sinif tanimlanabilir.
- public tanimlanan sinif , dosya ismiyle mutlaka ayni olmak zorundadir. Ornegin ,
public class Employee tanimlanmissa kaynak dosyasi mutlaka Employee.java olmalidir. - package tanimlamasi mutlaka en basta yer almalidir.
- import tanimlamasi package tanimlamasi ile class tanimlamasi arasinda yer almalidir.
- import ve package tanimlamasi , bir kaynak dosyada tum sinif tanimlamalari icin gecerlidir.
- Bir kaynak dosya tabi ki birden fazla public olmayan sinif tanimlamasi icerebilir.
SourceFile.java
package chapter1.classDecAndModifier; import java.io.*; public class SourceFile { } class NonPublicClass { }
Modifiers ( Belirtec)
Javada modifier lar 2 ye ayrilir.
access modifiers : public , protected , private
non – access modifier : strictfp, final , abstract
Ilerleyen derslerde tum bu belirtecleri derinlemesine inceleyecegiz.
Java ‘da 3 tane erisim belirteci vardir (access modifier) buna ragmen 4 tane erisim seviyesi (access level) vardir . ( default / package level )
Eger bir degiskeni, metodu, sinifi tanimlarken belirtec kullanmazsak default level olarak tanimlanirlar.
Sinif Erisimi (Class Access)
Java da siniflar ya public olarak tanimlanir ya da default level (package level) tanimlanir, yani bos birakilir. Siniflar icin protected veya private tanimlamasi soz konusu degildir !
Default Access
class A , default level tanimlanmissa ve class B den farkli pakette tanimlanmissa, class B class A ya ulasamaz .
A.java
package chapter1.package1; class A { }
B.java
package chapter1.package2; public class B { public static void main(String[] args) { // A a= new A(); compile hatasi } }
Public Access
Bir sinif public olarak tanimlanmissa , tum paketlerdeki siniflardan public tanimlanan bu sinifa erisim saglanabilir. Yukaridaki ornekte A sinifini public olarak degistirirsek, farkli paketlerde olmalarina ragmen B sinifindan A sinifina ulasilabildigimizi gorebiliriz.
Non-Acces Class Modifiers
final , abstract ve strictfp Javada anahtar kelimelerdir. Bu anahtar kelimeler siniflar icin kullanilabilir. Bu anahtar kelimelerden strictfp ile final veya strictfp ile abstract kullanilabilir hic bir sekilde final ve abstract yan yana gelemez. Bunlarin dogasi birbirine tamamen zittir.
strictfp
siniflar ve metotlar icin kullanilabilir fakat asla degiskenler icin kullanilamazlar. Bir sinifi veya metodu strictfp olarak tanimlamak float sayilari IEEE 754 standartina uygun olmasini saglamak demektir.
final
final anahtar kelimesinin siniflar ile kullanimi , final tanimlanan sinifin kalitilamayacagi yani bu sinifin bir alt sinifi olamayacagi anlamina gelmektedir. Ilerleyen konularda inheritance konularini isleyecegiz
Bir sinifi final tanimlamak ve kalitilmasina engel olmak genel olarak Object Oriented ruhuna ters gibi gozukmektedir. Javaa core kutuphanesindeki siniflararin cogu final olarak tanimlanmistir. Bu guvenlik icindir.
Bir sinifi final olarak tanimlamak istiyorsak , bu siniftaki metotlarin override edilmesine gerek duymayacagimizi garanti etmemiz gerekmektedir.
Son olarak bir sinifin final tanimlanmasi perpormansa + etki saglamaktadir.
final class B { } public class A extends B{ }
Ilerleyen derslerde final anahtar kelimesi uzerinde duracagiz.
abstract
abstract sinifin amaci final siniflarin aksine, kalitilmaktir. Ilerleyen derslerde abstract class lari derinlemesine inceleyecegiz.
abstract public class A{ private int var1; private String var2; public abstract void method1(); public abstract void method2(); public void method3() { System.out.println("Method3"); } }
abstract sinifimizi inceleyecek olursak public abstract veya abstract public tanimlasi yazilabilir.
- Degisken tanimlanabilir.
- abstract metot tanimlanabilir, abstract metotlarin govdesi yoktur yani { } yoktur. ve ; ile biterler.
- abstract class ta normal metot da tanimlayabiliriz.
- abstract class lardan nesne olusturulamaz. A = new A(); compile hatasi verir.
- Bir sinifta sadece 1 tane abstract metot bile tanimlansa tum sinif abstract olmak zorundadir.
- Bunun tersine hic abstract metot olmasa da bir sinif abstract olarak tanimlanabilir.
- final ve abstract hic bir sekilde yan yana gelemezler.