; 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.
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