Java da Static ve Instance Initialize Bloklar

Java 2 tür Initialize blok vardır.

->Static Block
->Instance Block

Static initialize blocklar main metodundan önce sınıf yüklendiğinde çalışacaktır.
Static blocklar ilk önce ve sadece 1 kereliğine çalışır.
Instance blocklar ilgili obje/instance oluşunca çalışacaktır.
Instance blocklar her obje oluşturulduğunda tekrar çalışacaklardır.

class Test {
	
}

public class InitializeTest {

	// static initialize block
	// static initialize blocklar main metodundan once sinif yuklendiginde
	// calisacaktir.
	// birden fazla initialize block oldugunda tanimlanma sirasina gore
	// calisacaktir.
	static {
		System.out.println("static initialize block 1");
	}

	static {
		System.out.println("static initialize block 2");
	}

	static {
		System.out.println("static initialize block 3");
	}

	// instance initialize block
	// instance initalize blocklar ilgili sinif tipinde obje olusunca calisacaktir.
	// tanimlandigi sirada calisirlar.
	// 
	{
		System.out.println("instance initialize block");
	}

	// instance initialize block
	{
		System.out.println("instance initialize block2");
	}
	
	InitializeTest(){
		System.out.println("Constructor!!!");
	}

	public static void main(String[] args) {
		System.out.println("main");
		
		InitializeTest test = new InitializeTest();
		InitializeTest test2 = new InitializeTest();
//kactane obje olusturursak okadar kez instance blocklar calisacaktir.
//Bir obje oluşuturulduğunda ilk önce instance block çalışır daha sonra constuctor çalışır.

/* Çıktı:
static initialize block 1
static initialize block 2
static initialize block 3
main
instance initialize block
instance initialize block2
Constructor!!!
instance initialize block
instance initialize block2
Constructor!!!
*/
	}

}

#initialize-block, #instance-block, #java, #java-dersleri, #static-block

Override

Java da Override:

Override türkçede ezmek, geçersiz kılmak anlamındadır. Bizim yapacağımız da budur  üst sınıftan alınan bir özelliği,alt sınıfta değiştirmektir.

class Animal{
 
 public void seslen()
 {System.out.println("Hayvannn");}
  
}

class Dogs extends Animal
{
@Override
public void seslen()
{
 System.out.println("Hav havv");
}
 
}

class Cats extends Animal
{
@Override
public void seslen()
{
System.out.println("Miyav miyavvv"); 
}

}


public class OverrideOrnek {

  public static void main(String[] args) {
 
  Cats kedi = new Cats();
 // Burada Cats sınıfına yazdığımız 'miyav' çalışır, animal sınıfından kalıttık ve override ile üzerine ezme yaptık.
  
  Dogs kop= new Dogs();// Dogs sınıfına yazdığımız çalışır.
  Animal hay = new Animal();//Animal sınıfında yazdığımız çalışır.
  Animal kopek= new Dogs();// Obje Dogs sınıfında tanımlandığından 'Hav Havv' yazdırır.
  kedi.seslen();
  kop.seslen();
  hay.seslen();
  kopek.seslen();
 }
/*Static metodlar ve değişkenler override edilemezler.
 * public > protected > default >private
 * Private sınırlı erişim old. override edilemezler.
 */




}

#java, #java-dersleri, #override

Enum

Java da Enum:
Enum(Enumaration) tanımlamaları programlama dillerinde belirli değerlere karşılık gelen sabit değerlerin temsili için kullanılırlar, haftanın günleri, bir şeyin boyutu,ölçüsü vs gibi. Geliştiriciye sağladığı faydalar ise kod okunabilirliğini arttırması, muhtemel değer kümesinin daraltılması ve tip güvenliğini sağlaması dolayısıyla hata payını en aza indirmesi.Daha okunabilir kod için enumlar kullanılmalıdır.


public enum EnumOrnek {

}
class Coffe{
enum Coffee{
 SHORT,TALL,GRAND,VENTI;
 
 
 }
Coffee size;// Bu şekilde Coffee 'size' olarak endeks edebiliriz.

/* Enum bir anahtar kelimedir.
 * Coffees sınıfında bu kadar fazla kod yazacağımıza enum anahtar kelimesinde tanımlamamız yeter.
 */

/*
public static final String TALL = "TALL";
 public static final String VENTI = "VENTİ";

 public static final String GRAND = "GRAND";
//Bu kadar kod yazacağımıza enum kullanarak kod fazlalığını önlemiş olduk.

 public static void main(String[] args) {
  Coffe coffee = new Coffe();
  
 System.out.println(coffee.size.TALL);
 System.out.println(coffee.size.VENTI);
 System.out.println(coffee.size.GRAND);
// Bu şekilde enumları yazdırabiliriz.

}

}

//Enumlara integer değerler de verebiliriz.



public class EnumlaraDevam {

  enum CoffeSize{
  
  SHORT(3),TALL(6),GRAND(8),VENTI(10);
  CoffeSize(int Price)
  {
   this.setPrice(Price);
  }
  public int getPrice() {
   return Price;
  }
  public void setPrice(int price) {
   Price = price;
  }
  private int Price;
 }
 
 
 
 public static void main(String[] args) {
 
  System.out.println(CoffeSize.GRAND);
  System.out.println(CoffeSize.SHORT.Price);
  //Burada Price çağırdığımız zaman SHORT'a tanımladığımız sayıyı çağırmış oluyoruz.
  System.out.println(CoffeSize.TALL);
  System.out.println(CoffeSize.VENTI.Price);
  
  for (CoffeSize cs:CoffeSize.values())
//For da : yazdırma tanımlı bir dizi ya da sayı topluluğu varsa bütün değerlerini yazdırır.
  {
   System.out.println(cs + " " + cs.getPrice() );
  }
//Burada SHORT 3 TALL 6 GRAND 8 VENTI 10 şeklinde yazdırdı.
  
 }

}

#enum, #java, #java-dersleri