İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır

Static

Class'a ait, her class için sadece bir tane yaratılıp, her nesne için çoğaltılmayan, instance yaratmadan kullanılabilen değişken veya method

Static sözcüğü temel olarak "class'a ait", yani "instance'a ait olmayan" anlamına gelir. Bir değişken eğer static'se onun değeri o class'ın bütün instance'ları tarafından paylaşılır. Örneğin, insandaki el sayısı 2'dir. Bu insandan insana değişmez. Bu yüzden bu veri Human diye bir class'ın static değeri olabilir. Her insanın ismi vardır ama bu her insanda farklı bir değer alır. O yüzden 'name' gibi bir property non-static, yani instance değişkeni dir. Bir başka örnek de vadesiz banka hesaplarındaki faizdir. Herkesin bankada farklı faizi vardır. Ama vadesiz hesaplara uygulanan faiz normal şartlar altında herles için aynıdır. Vergi oranı veya masraf yüzdesi gibi kişiden kişiye değişmez değerler de vardır. Bunlar hep static değerlerdir.

	public class BankAccount{
		private float money=0.0;
		public static float=interestRate=10.3f;
		public BankAccount(float mon){
			money=mon;
		}
		public float getInterest(){
			return money*(1+interestRate);
		}
		public static float getInterestRate(){
			return money*(1+interestRate);
		}
	}

Burada 'money' herkes için değişiktir. Ama interestRate herkes için aynıdır. Static bir method'u kullanmak içine sadece class'ın ismi yeterlidir. Bir instance oluşturmaya gerek yoktur.

	BankAccount.interestRate=20.0f;

şeklinde bir kullanım bütün BankAccount instance'larını etkileyecektir. Daha sonra

	BankAccount ba=new BacnkAccount(120)
	float interest=ba.getInterest();

yazılırsa alınan değer yeni orana göre hesaplanır. Static method'lar da yazılabilir. Bunlar hiç bir instance değişkeniyle işi olmayan sadece static değişkenleri veya parametre olarak aldığı değerleri kullanabilen method'lardır bunlar.

	public static float getInterestRate(){
			return interestRate;
	}

Bir değişken static olmasının yanı sırıra final tanımlanırsa sabit (değiştirilemez olur). Mathclass'ındaki PI değişkeni öyledir. Yine ayni class'daki sin() method'uda static'tir. 30 derecelik bir açının sinüsünğ hesaplamak için bu propery ve bu method

	double radian=Math.PI/6;
	double s=Math.sin(rad); 

şeklinde kullanılır.

	Math m=new Math();

şeklinde bir instance yaratmadan kullanılır.