22 Nisan 2012 Pazar

İrsilik (Inheritance)

Javada əsas sistem claslar və metodlar üzərinə qurulmuşdur.Məqsəd az və səliqəli iş görməklə vəzifənin yerinə yetirilməsi -proqramın çalışmasıdır.Bunun üçün də eyni adlı metodları hər clasda dəfələrlə yenidən yazmaqdansa onları eyni adlı metodları bir clasda toplamaq və lazım olduqca ordan çağırmaq daha məqsədə uyğundur.Bu rahat və keyfiyyətli üsuldur.Az iş çox nəticə deməkdir.Nəzəriyyələr tətbiqatda daha da aydınlaşır.Danışdıq bu qədər kifayətdir, keçək iş qisminə.:
Məsələn biz CdPlayer, Radio və TV adlı claslar yaradırıq.Bunların hərəsinin fərqli funksiyalarıda vardır.
Məsələn CdPlayerin discexit, Radyonun frekans, TV-nin də channel düyməsi vardır
Bunları yaratdığımız classlarda yazaq:


public class  CdPlayer {
    public void discexit(){
        System.out.println("CD Exit");
    }
}

- - - - - - - - - - - - - - - - - - - - - -


public class Radio {
    public void frekans(){
        System.out.println("Radio frenkans");
    }
}


- - - - - - - - - - - - - - - - - - - - - -



public class TV {
    public void channel(){
        System.out.println("TV Channel");
    }

 public void channel(){
        System.out.println("TV Channel");
    }

}




Həmçinin, bunların hamısının start, stop, volume kimi ortaq özəllikləri düymələri də var.Ona görə biz bu funksiyaları bu 3 classın içində üç dəfə yazmaqdansa daha rahat yola əl atıb Pult adında bir class yaradır və içində bu metodları bir araya toplayır və yazırıq.



public class Pult{
    public void start(){
        System.out.println("Start");
    }
   
    public void stop(){
        System.out.println("Stop");
    }
   
    public void volume(){
        System.out.println("Volume");
    }
}





Pult classı SuperClass adlanır.Digər Radio, TV və Cd classları isə subClasslar adlanır.Superlə Sub arasında əlaqə qurmaq üçün "extends" istifadə edilir.Yəni Subclaslar Superə extends edilir.Məs:



public class  CdPlayer extends Pult {
    public void discexit(){
        System.out.println("CD Exit");
    }
}

- - - - - - - - - - - - - - - - - - - - - -


public class Radio extends Pult {
    public void frekans(){
        System.out.println("Radio frenkans");
    }
}


- - - - - - - - - - - - - - - - - - - - - -



public class TV extends Pult {
    public void channel(){
        System.out.println("TV Channel");
    }

}

Sonra Main metodu olacaq clasımızda extends etdiyimiz classların obyektini yaradır SuperClassdakı ortaq start stop volume adlı metodlarımızı asanlıqla çağırırq.Məsələn:


public class InheritanceNümunəsi {
    public static void main(String[] args) {
     
TV t = new TV();

       t.start;
       t.stop;
       t.volume;


Radio rd = new Radio();

       rd.start;
       rd.stop;
       rd.volume;

       

CdPlayer cd = new  CdPlayer();

        cd .start;
        cd .stop;
        cd.volume;


       
       }
}

Əgər Super(Pult) classındakı metodlardan biri digər classda fərqli olarsa yəni məs: CDPlayerin start metodunda  SuperClassdaki kimi System.out.println("Start");  deyildə System.out.println("LG CD Player Start"); olmasını istərsək, bu zaman Override qavramından istifadə etməli oluruq.Override eyni adlı lakin fərqli metodları fərqləndirmək üçün istifadə olunur.Yazacağıq ki,


 public class  CdPlayer extends Pult {
   @Override
    public void start(){
        super.start();
                System.out.println(" LG CD Player Start ");
)
 public void discexit(){
        System.out.println("CD Exit");
    }


 Bu qədər..Uğurlar..!!