2 Mart 2012 Cuma

CONSTRUCTOR

Constructor butun access modifierler ile islene bilir.yeni public , protected, private,ve default ola bilir.Arqument goture bilir(hemcinin var-args).STATIC, FINAL, ABSTRACT OLA BILMEZ!VOID OLA BILMEZ! 
; OLA BILMEZ! FOO() ; // ola bilmez!
Butun class-larin hemcinin abstract class-larinda constructoru olmalidir.Cunki Interface-ler inheritance tree-de objelerin 1 hissesi deyildirler.Interface-in constructoru yaradilanda xeta verir.Constructorun return tipi olmur.Constructorun adi class-in adi ile uygun olmalidir.Override oluna bilmir overload olunur.
Constructor-da super() qurtarana qeder instance metod,veya instance deyisenleri cagirmaq olmaz.eger cagirilsa xeta verer.

public class A{
public A(){
int a=10;              //  olmaz xeta verecek.
super();
int a=10;                  // burda yazmaq olar.
}
}
Yalniz static deyisenler ve metodlar super() veya this()-in 1 hissesi kimi access ede biler.Meselen:
super(A.NAME);    // OK, cunki NAME static deyisen kimi elan olunub.
Constructor metodun icinden cagirila bilmez.
Eger Default constructor el ile yazilibsa o zaman compiler onu daxil ede bilmez.Eger her hansi 1 argumenti olan constructor yazilibsa bu zaman default constructor artiq compiler terefinden yaradilmayacaq.
DEFAULT CONSTRUCTOR:

  • Class ile eyni access modifiere malik olur
  • Argumenti olmur
  • Argumenti olmayan super() daxil edir.
class Animal{
Animal(String name){
}
}


class Horse extends Animal{
Horse(){
super();                //  Problem
}
}

Bu kod compile olmayacaq.Cunki Horse class-da olan super() Animal class-nin constructoruna baxir ve gorurki argument goturub.ona gore super() bos oldugu ucun xeta verecek.


class Animal{
Animal(String name){
}
}


class Horse extends Animal{   //   problem.
}
Cunki Horse-da default oldugu ucun yene eyni xetani verecek.Bu xetanin qarsini 2 yolla almaq olar.
Ya Horse-da olan super() -e argument yazmaq super class-daki constructora uygun olaraq.Yadaki super class-da 1 dene default constructor yaratmaq ve icini bos etmek.

Hiç yorum yok:

Yorum Gönder