Pure Java – 02 Class Declaration and Access Modifier

ArdaEgridere tarafından 6 months önce yazıldı, kez görüntülendi ve hiç yorum yapılmadı.

Merhaba Arkadaslar,
Bu dersimizde class declaration ve access modifier konusuna giris yapacagiz , bir kac ders boyunca devam edecegiz.

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.

Ilerleyen derslerde abstract, ve final  konusuna tekrar donecegiz ve cok daha detayli olarak isleyecegiz.

Benzer Yazılar
Yorumlar ( 0 )

Tema: Sipsi V2
%d bloggers like this: