05 Declare Class Members – 02

Bu dersimizdee Class Member (instance variable, methods) icin kullanabilecek nonaccess member modifier konusunu isleyecegiz.

final Methods

final anahtar kelimesi metotlar icin kullanildiginda , alt sinif tarafindan bu metodun ezilmesini (override) engeller.

A.java

package purejava5;

public class A {

	void method1() {

	}

	final void method2() {

	}

}


B.java

package purejava5;

public class B extends A{

	@Override
	void method1(){

	}

/*	void method2(){

	}*/

}

B sinifimiz A sinifini extends etmektedir, final olarak tanimlanmayan method1 ezilebilirken, final olarak tanimlanan method2 ezilemektedir.

abstract Methods

abstract metotlar , abstract anahtar kelimesi ile tanimlanan , suslu parantezin olmadigi { } gariban metotlardir  sadece tanimlanmistir icerisinde herhangi bir fonksiyonellik yoktur.
abstract metotlar noktali virgul ile son bulurlar,

public abstract void method1();

Yukaridaki kod parcacigi derleme hatasi verecektir, cunku sinifimiz abstract bir metoda sahiptir ve bu sinif abstract olarak tanimlanmamistir.

abstract sinifi extends eden bir sinif , abstract metotlari ezmek (override) zorundadir. Eger extends eden sinif abstract ise ezmek zorunda degildir.

A.java

package purejava5;

abstract public class A {

	final void method1() {

	}

	void method2() {
		System.out.println("Hello Java");
	}

	abstract void method3();

	abstract int method4();

}

class B extends A {

	@Override
	void method3() {

	}

	@Override
	int method4() {
		return 0;
	}

}

abstract class C extends A {

	@Override
	void method3(){
	System.out.println("Override");	
	}
	abstract void method5();
}

class D extends C {

	@Override
	void method5() {
		// TODO Auto-generated method stub

	}

	@Override
	int method4() {
		// TODO Auto-generated method stub
		return 0;
	}

}

A sinifi abstract olarak tanimlanmistir ve 2 adet abstract metotu vardir.
B sinifi, A sinifini extends ettigi icin ve abstract olarak tanimlanmadigi icin bu 2 abstract metodu override etmek zorundadir.
C sinifi , abstract oldugu icin A sinifini extends etmesine ragmen A sinifinda tanimlanan abstract metotlari override etmek zorunda degildir, fakat dilersek override edebiliriz.
C sinifininda bir adet abstract metot tanimlanmistir.
D sinifi C sinifini extends ettiginde, C sinifinin abstract metodunu override etmek zorundadir bununla birlikte C sinifinin A sinifindan kalittigi ve override etmedigi method4 ,D sinifinda override edilmek zorundadir.

Genel kural sudur, abstract olarak tanimlanan bir metot , abstract olarak tanimlanmayan ilk sinifta mutlaka override edilmelidir.

synchronized Methods

synchronized olarak tanimlanan bir metoda ayni anda sadece bir tek adet thread erisebilir. Ilerleyen derslerde synchronized konusunu isleyecegim , burada konumuz belirtecler oldugu icin detaya girmeyecegim.
synchronized anahtar kelimesi sadece metotlar icin kullanilabilir, degiskenler veya siniflar icin tanimlanamazlar.

native Methods

native , Java ‘ da anahtar kelimedir ve sadece metotlar icin kullanilabilir. Degiskenler ve siniflar icin kullanilamazlar. Javada , C kodlarini cagirip kullanabiliriz.
native metotlar abstract metotlar gibi govdesiz olarak tanimlanir.

strictfp Methods

strictfp belirtecini siniflar icin kullanmistik, bu belirtec metotlar icin de kullanilabilir. Bir sinifi strictfp olarak tanimlayabildigimiz gibi metotlari da bireysel olarak tanimlayabiliriz. Floating islemlerin IEEE 754 standardina uygun olmasini saglar.

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*
*