HomeMapIndexSearchNewsArchivesLinksAbout LF
[Top Bar]
[Bottom Bar]
[Photo of the Author]
Jose M. Fernández 

Yazara yazi
Icerik
Lexical Issues
Cesitler, Degiskenler ve islemciler
Kontrol Cumleleri
Siniflar, yontemler ve kalit 

Java. Part II

[Ilustration]

Çeviri: Kadriye Öztürk (Gözden geçirilmektedir)

Ozet: Makalelerin bu serileri klasik programlama dillerini bir model olarak almistir.Java dilinin ocelliklerine kisa bir giris yaptiktan sonra simdi veri cesitleri, degiskenler, kontral ifadeleri gibi konularda calismaya baslayabiliriz.Bu bize en onemli konu olan siniflara yol gostericek.Siniflar kavrami bu programlama dilinin kokundedir.Baska bir deyisle siniflar bu programlam dilinin temelidir.Siniflar konusunu ortaya koymak icin bu parca, programlama dilinin geri kalanina benzerliginden oturu ESQUEMATICA¿? gibi olacak.


Lexical issues

Bicimsel konusursak,bir Java programi bir seri komutlar, belirtecler, literaller ayiraclar, bos araliklar ve anahtar kelimelerle bicimlendirilir.Derleyici tek formatta yazilmis olan kodu alir, bit sayisini 8 ASCII'den 16'ya buyutur ve bir de hic bir latin diline bu karekterleri uygun hale getirmek icin tus haritasini genisletir.Bos araliklar, etiketler ve carriage donumler sembol setine ait olmadiklari icinderleyici tarafindan silinir.Bu, Java programini serbest yazilim stilinde kalmasini saglar.

Java komutlari su uc stilin birinde olabilir.

          //komutlar
//'den satir sonuna kadar olan karakterler onemsenmez.
           /* komut */
/* ve*/ arasindaki tum karekterler onemsenmez.Bu komutlar bir kac satir uzatma ozelligine sahip olabilir.
           /** komut **/
/**/ gibi komutlar, fakat bunlar bildirilerden once kullanilmalidir, cunku javadoc aleti onlari otomatik olarak dokuman yaratmada kullanir.

Belirtecler degiskenlere, sinflara ve yontemlere dereleyicinin onlari tanimasi icin verilen isimlerdir.Herhangi bir harf katarini(yuksek ve dusuk durumda), numaralari ve alti cizgili ve dolar sembollerini kullanmak mumkundur.Onlar bir numarayla baslayamaz.

Java, ayiraclar gibi bazi ozel karakterleri kullanir.En cok kullanilan,bizim de bulabilecegimiz, ayiraclar:
Sembol Tanimlama
() O tanimlamalardaki parametre listelerini bulundurur ve yontemleri arar.Ayrica ifade onceligini degistirmek ve ifadeleri bir kontrol cumlesinde ve cesit degisiminde icermek icin de kullanilir. 
{} Baslangic vektorlerinin degerlerini otomatikmen icermek icin.Sinflarla, yontemlerle ve yerel isaretle kullanmak icin bir kod blogunu tanimlamak icin
[]
; Cumle ayiraclari.
, Degisken bildirilerindeki ardisik belirtecleri ayirmak icin.FOR cumlesinde cumleleri ayirmak icin.
. Paketi, alt paketi sinif isimlerini ayirmak icin.Referans yapilmis bir degiskenden yontemi veya bir degiskeni ayirmak icin.
Anahtar kelimeler Java dili tarafindan kullanilan belirteclerdir ve Java tarafindan tanimlanan herhangi bir diger yolda kullanilamaz.Sonraki tablo butun Java anahtar kelimelerini gosterir:
 

abstract double int super
boolean else interface switch
break extends long synchronized
byte false native this
byvalue final new threadsafe
case finally null throw
catch float package transient
char for private true
class goto protected try
const if public void
continue implements return while
default import short  
do instanceof static  

Veri cesitleri, Degiskenler, Islemciler

Bu noktada soylemem gerekiri ki, Java zor yazilan bir dildir, her degisken bir ceside sahiptir ve her cesit oldukca iyi tanimlanmistir.Butun isaret cesidi uyumluluk yonunden test edilmistir,her ikisi acik veya engelsiz parametre, yontemlere cagrilarda interchange yaparlar.Derleyici butun ifadeleri ve parametreleri cesit uyumlulugunu saglamak icin kontrol eder.

Bir onceki makalede Java'nin tamamen nesne uygunlugu oldugundan bahsetmistim, yine de, goz onunde bulundurmaliyiz ki, Java nesne olmayan sekiz veri cesidini tanimlar.Bunun yaninda cesitli nedenlerden dolayi butun veri cesitleri tanimlanmis bir alana sahiptir.

Basit veri cesitleri dort gruba bolunebilir:
CESIT ISIM BOYUT ALAN
Integer long 64 -9.223.372.036.854.775.808 

9.223.372.036.854.775.807
  int 32 -2.147.483.648 

2.147.483.647
  short 16 -32.768 a 37.767
  byte 8 -128 a 127
Floating point float 32 3.4 e-038 a 3.4 e+038
  double 64 1.7 e-308 a 1.7 e+308
Character char 16 Unicode
Boolean boolean   true o false

Degiskenler:

Bir degisken, bir belirtec ve bir cesit tarafindan tanimlanmistir.Alternatif olarak degiskeni ayni anda hem belirtip hem de ilk konumuna getirebiliriz.Her degisken bir isaret ve omre sahiptir.Bunun yaninda, onlar kullanilmadan once bildirilmelidir.Onlar bir programin herhangi bir aninda kullanilabilirler ve ayni anda kullanilabilirler.

Genel olarak, bir degisken bu yolla bildirilir:
 

identifier type [=value] [,identifier [=value]......];

            
Yukaridaki "type" interface'e ragmen temel bir Java cesidi veya sinfi olabilir.Eger degiskeni ilk durumuna getirirsek, onun aciklamasi degisken bildirisinde belirtilen ayni cesit veya uygun bir cesit olmalidir.

Ornekler:
 

int  a = 4, b, c=7;

char c;

myclass class;

            
Bir kurala gore degisken bir isaret icinde tanimlanir.(Biz isareti parantezler{} arasindaki kod kismi olarak tanimlariz)Bir degisken onun isaretinden birkez cikmis degerine sahip olamaz.

Programlama dillerinin bir cogu iki isaret kategorisini tanimlar,kuresel ve yerel.Ama bu Java nesne uygunlugu modeline iyi uymaz.Bu modelde iki ana isaret, bir sinif ve bir yontem tarafindan tanimlanir.

Cesit degisimi:

Java, teori inkar etmesine ragmen baska bir cesit degiskene, ozel cesit bir deger atamaya izin verir.Eger cesitler uyumlu ise, bir otomatik degisme yurutulur;degilse, bir kesin cesit degismeyle uyumsuz cesit arasinda calismak daima mumkundur.Cesitlerin bir otomatik degisimini almak icin, su gereksinilir: Ornegin bir int cesidi, bir byte cesidini saglamak icin yeterince buyuktur, boylece o kesin degismeye ihtiyac duymaz.Sayi cesitleri char veya boolean uyumlu degillerdir ve bu sonuncular geri kalanlardan hic biriyle uyumlu degillerdir.Eger biz bir int degerini bir byte'a atamak istersek, kesin degisme kullanimini su formatta yapmaliyiz:
 
(type) value
ki type cesit degisme hedefini gosterii.Ornek:
 
int a;

char b;

a=(int) b;

            
Otomayik cesit degismesinde dikkatli olmaliyiz ki bu degisme bilgi sizintisina yol acabilir.Ornegin:

Bir floating point cesidinin bir integer cesidine degismesinde, parca elemanini kaybedebilir:
 

int a;

double d= 125.43;

a=(int) d;
degiken 125 degerine sahiptir. 
byte   b;

int i=257; 

b=(byte) i;

            
b 1 degerine sahip, bu 257'nin 256'ya bolumunun sonucundaki 256 byte cesidinin alanidir. 
byte b;

double d= 340.123;

b=(byte) d;
yukarida b 84 degerine sdahip olacak; 
Butun degisimler derleyici ve hic bir derleme hatasiyla gundeme gelmeyen yorumcuyla yurutulur.

Islemciler:

Dort gruba bolunebilen genis bir seri islemciler var:yerel aritmetik, parca duzeyi ve relational.Genel bir kural olarak, onlar diger dillerdeki gibi calisacaklardir, ama burda tartisilacak kucuk farkliliklar var.
Aritmetik Islemci:
islemci Tanimlama
+ Addition
- Subtraction
* Multiplication
/ Division
% Modulo (division remaining)
++ Increment
+= Addition  and assignment
-= Subtraction and assignment
*= Multiplication and assignment
/= Division and assignment
%= Modulo and assignment
-- Decrement
Modula islemcisi, integer ve floating point degerlerinin ikisine birden uygulanabilir:
int a=38;

double d=41.95;

int c=a%10;<

double  e=d%10;
c degiskeni bir 8'e sahiptir.e degiskeni bir 1.95'e sahiptir;

Gorevleriyle islemciler yapilarda yararlidir.Sunun gibi:

a = a + 4; esittir a+=4;

a = a % 2; esittir a%=2;

Normal olarak bu cumleleri soyle soyleyebiliriz:

var=var op expression; yerine var op= expression yazilabilir;

Parca duzeyi islemcisi:
integer,long, int, short, char, byte cesitlerine uygulanabilen bazi tanimlanmis parca duzeyi islemcisi vardir.
 
Islemci Tanimlama
~ Unary NOT at bit level
& AND at bit level
| OR at bit level
/\ Exclusive OR exclusive at bit level
>> Right shift
>>>> Right shift filled with zeroes
<< Left shift
&= AND at bit level and assignation
|= OR at bit level and assignation
/\= exclusive OR at bit level and assignation
>>= Right shift and assignation
>>>>= Right shift filled with zeroes and assignation
<<= Left shift and assignation
Iliskisel Islemciler:
Onlar iki operand arasindaki iliskiyi belirler, ozellikle test yaparken.
 
islemci Tanimlama
= = Esit
!= 'den farkli 
> 'den buyuk
< 'den dusuk
>= Esit veya 'den buyuk
<= Esit veya 'den kucuk
(C/C++) gibi diger dillere benzemeksizin, boolean degerleri yonlu ve dogrudur.Bu onlarin sayisal olmadigini gosterir..
Boolean mantik islemcisi:
Onlar sadece boolean islemcileriyle calisirlar ve ayrica baska bir boolean islemciti uretirler.
 
Islemci Tanimlama
& logic AND 
| logic OR 
/\ logic XOR(exclusive OR)
|| shortcut OR
&& shortcut AND
! unary logic NOT
&= AND assignment
|= OR assignment
/\= XOR assignment
= = Equal to
!= Not equal to
?: Ternary If-then-else ternary
The OR shortcut operator has as a result: true, when the first operator is true, whichever the second operator value. Equally, the AND shortcut operator is false when the first operator is false, whichever the other operator.

ternary islemcisinin genel format:

Expression1? expession2 : expression3

Eger Expression1 dogruysa, expresion2 yururluge konulur;yanlis ise, expression3 yururluge konulur.

Operators precedence:

Yuksek
( ) [ ] .  
++ -- ~ !
* / %  
+ -    
>> >>>> <<  
> >= < <=
= = !=    
&      
'      
|      
&&      
||      
?:      
= Op=    
Dusuk

Flow-Control cumleleri

Onlar uc gruba ayrilabilir: Selection, Iteration and Jump.
 
Grup Cumle Tanimlama
Selection if
if ( condition ) 

  sentence1;

else 

  sentence2; 
  various if's
If (condition ) 

  sentence;

else if (condition) 

  sentence;

else if (condition) 

  sentence;

.

.

else 

  sentence;
  switch
switch (expression){

  case value1:

    sentence;

    break;

  case value2:

    sentence;

    break;

    .

    ...

  default :

    sentence;

}
Iteration while
while (condition) {

  sentence;

}
  do while
do {

  sentences;

} while (condition)
  for
for (initialization, condition, iteration) {

              

  sentences;

}
Jump break switch'den cikmak icin. 

loop'dan cikmak icin

  continue Exits from the current loop iteration but continues in the same loop
  return Return explicitly from a method

Siniflar, Yontemler, Kalit

Java scratch'den dizayn edilmis bir dildir, ki onceki makalede bahsetmistik, ve bu bir nesne yerlesimi programlama dilinin yararli yurutulmesi, acik ve daha yakin bir dil olmasinin nedenidir.Dolayisiyla butun Java progrmalari nesne uygunlugu icerir.Dikkat etmeniz gereken bir nokta, makalelerin bu serilerinde nesne uygunlugu programiyla ilgili herhangi bir dersin olmamasidir.Bununla ilgili en bastan baslayarak en yararli progrmalara kadar uzanan harika bir yazin bulabilirsiniz.Cunku OOP(nesne uygunlugu programi) Java icin cok onemlidir.Anlamalisiniz ki o bu dilde programlamak icin baslangictan da onemlidir.Biz her zaman Java terminolojisini izlesekte, en kisa ve acik yolla Java'yi tamamlanmis nesne uygunlugu dili yapan elementleri tanimlamaya calissakta, bazi temel elementleri kullanmaya ve ele almaya zorlandik.

SINIFLAR :

Bu Java cekirdegidir.O bir nesnenin seklini ve tabiatini tanimlar.Ayrica o nesne uygunlugu programinin temelini simgeler.Yeni bir veri cesidi, bir sinif tarafindan tanimlanmaya gelir ve bu yeni cesit, bu cesidin nesnelerini yaratmakta kullanilir.

A sinifi bir nesne icin modeldir ve bir nesne bir sinif icin ornektir.Java kuresel islevleri veya degiskenleri desteklemez, boylece butun program yontemleri bir sinifa tanimlanmalidir.

Bir sinif saklanmis kelime kullanimin tanimlanir.Yaygin bir sinif tanimlamasi soyle olabilir:
 

Class class_name {

  Type instance1_of_variable;

  Type instance2_of_variable;

  .

  .

  ...

  type instance_variable;

  type method_name(parameter_list){

    //body of the method

  }

  .

  .

  ..

  type name_of_the_method(parameter_list){





    //body of the method

  }

}
Degiskenler veya veri, orneklerinin degiskeni diye cagrilar bir sinifa tanimlanabilirler.Yontemler kodu icerirler ve onlar bir sinifin verisinin nasil kullanilacagini tanimlarlar.

Bir sinifin nesnelerini almak icin iki adima gereksinilir:

    Sinif cesidinin bir degiskenini bildirmek.Bu degisken bir nesneyi tanimlamaz, o bir nesneyi referans etmek icin kullanilabilecgimiz bir degiskendir.

    Dinamiksel olarak hafizayi nesneye atamak ve onun bir referansini almak icin.Bu ikinci adim yeni operatorun anlami tarafindan yapilir.Genel gorunumu:
     

                
    
    variable = new name_of_the_class();
    "variable" yaratmak istedigimiz sinifin bir degiskenidir ve name_of_the_class, instanciated olan sinifin ismidir.Bir nesne yaratimi grafik olarak soyle tanimlanir:

    METHODS:

    Bir yontemin genel formati:
     
    type name_of_the_method (parameter_list) {
    
    
    
      //method_body
    
    }
    "type" yontem tarafindan geri gonderilmis cesittir; o sinif cesitlerini iceren herhangi bir gecerli cesit olabilir veya hicbir degeri geri gonderemez.(void)

    Paramete listesi, bir kolonla atrilmis cesit belirteclerinin bir cift ardisligidir.Parametreler, yonteme verilen argumanlarin degerlerini alan degiskenlerdir.Yontem hic bir parametreye sahip degilse, liste bos olacaktir.

    "void" 'den farkli bir deger geri donen yontemler sunu kullanirlar:

                
    
    return valor;
    Buradaki cesit donus seklidir.

    Java, esnek ve guclu yontemleri onceden hazirlar, bu yuzdenburadan makalenin sonuna kadar, en onemli yontem gorunuslerinin her birini tekrar gozden gecirecegiz.

    Buna karsin, devam etmeden once basit bir ornekle butun onceki kavramlara bir goz atalim.

    Dikdortgen seklindeki bir kutunun(havuz gibi) kapasitesini hesaplamak icin bir sinif yaratalim:
     

    Kod Komutlar
    class capacity {
    
        double length;
    
        double width;
    
        double height;
    
        void CalcVolume () {
    
            double volume ;
    
            volume = length*width*height;
    
            System.out.println("Volume: " +
    
                               volume);
    
        }
    
    }
    Gorebileceginiz gibi, uzunluk, genislik ve yukseklik gibi uc ornek degere sahip "capacity" adli bir sinif tanimladik.Ayrica akan hacmi hesaplayan bir yontemde tanimlanabilir.capacity.java adli kaynak dosyasini cagiracagiz.Ona derledigimizde bir capacity.class isimli bir sinif yaratilmis olacak.
    Bu sinif kendi basina bir applet gibi hic bir faaliyet tasiyamaz, aksine bu sinif komut satirindan isleme konulmak icin main() yontemine sahiptir.Biz, bu sinifin nesnelerini yaratmak icin bize olanak saglayan bir template yarattik.Bu hedefi yerine getirmek icin, komut satirindan isleme konulabilecek bir sinif yaratacagiz.
     
    Kod Komutlar
    class example {
    
      public static void main(String Arg[]){  
    
        capacity p1=new capacity();
    
        capacity p2=new capacity();
    
        p1.length = 16;
    
        p1.width=3;
    
        p1.height=2;
    
    
    
         //
    
        p2.length = 25;
    
        p2.width=6;
    
        p2.height=3;
    
    
    
        //
    
        p1.CalcVolume();
    
    
    
        //
    
        p2.CalcVolume();
    
    
    
      }
    
    
    
    }  
    
                
    Kapasite cesidinin iki degiskeni p1 ve p2 olarak tanimlanir.Yeni islemciyle p1,p2 degiskenlerine dogru gonderilebilen kapasite cesidinin iki nesnesini yaratiriz. 

    Bundan sonra, yaratilmis nesnelerin her birine deger atariz. 

    p1'de gonderilmis nesnenin Calc Volume() yontemini cagiririz.Bunun sonucunda a: 

    "Volume: 96", ekranda gostyerilecek. 

    p2'de gonderilmis nesnenin aynisi.A: 

    "Volume: 450", ekranda gosterilecek.

    p1.CalcVolume() isleme kondugunda Java yorumcusu, kontrolu CalcVolume() icinde tanimlanmis koda transfer eder.Bir kez butun kontrol cumleleri isleme konuldu, O cagrilan usule geri doner ve isleme konma bir sonraki satirda cagriya devam eder.

    Parametrelerle yontemler.Deger donumu.

    Yontemlerin cogunlugu, onlari genellestirmek icin birisine izin veren parametrelerle kullanilir.Bunun yaninda yontemler donum degerleridir, bu yuzden, degisik durumlarda kullanilabilen genis bir seri veriyle calisabilen yontemler yapabiliriz.

    Ornegimizi degerlendirecegiz:
     

    Kod Komutlar
    class capacity {
    
      double CalcVolume (double l, 
    
                         double a,
    
                         double p) {
    
        double volume=l*a*p ;
    
        return volume;
    
      }
    
    } 
    Uc parametreyi almak icin CalcVolume yontemi nitelendi.Bir cift cesidiyle geri donumu saglamak icin de tanimlanabilir.Bu faaliyet donus hacmi ogrenimi tarafindan yerine getirilir.
    class example {
    
      public static void main(String Arg[]){  
    
        capacity p1=new capacity();
    
        capacity p2=new capacity();
    
    
    
        double vol;
    
    
    
        vol=p1.CalcVolume(10,3,2);
    
    
    
        System.out.println("Volume: " + vol);  
    
    
    
        //
    
    
    
        vol=p2.CalcVolume(25,5,2);
    
    
    
        System.out.println("Volume: " + vol);  
    
      }
    
    } 
    
                
    Yonteme cagri, istenen parametrelerin gonderimi yapilir."vol" degiskeninde yontemin degeri geri doner ki yontemle ayni cesitte olmalidir.
    Siniflarin ana gorunusu yapicilardir.Bu maddeler,bir sinifin nesnesi yaratildiginda ne yaptigini tanimlar.Onlarin cogu, sinif tanimlamalarinin icinde onun kendi yapicilarini acikca tanimlar.Bu noktada tanimlanmazsa, Java yanlis yapiciyi kullanir(bizim ornegimizdeki gibi).

    Bir sinifa dahil bir yapici sinifla ayni isme sahiptir.Onu sozdizimi, yontemin burasina benzerdir.O, yeni islemci bitirmeden once, nesneyi yarattikdan sonra otomatikmen isleme doner.

    Yapicilar hic bir cesidi geri dondurmezler cunku onlar sinif cesitlerini geri dondururler.Yapicilar butun nesne durumlarini ilk halleriyle yuruturler. Bununla birlikte nesnenin bir ornegini yaratan kod onun kullanimin yapmak icin hazir bir nesneye sahiptir.Yanlis olarak, ornek degiskenler yepicilar tarafindan ilk hallerine getirilir.Yontemlerle o meydana gelirken, yapicilar onlari daha yararli yapmak icin parametreye sahip olabilir.Butun bu yeni gorunusleri tasarlamak icin ornegimizi niteleyelim.
     

    Kod Komutlar
    Class capacity {
    
      double length;
    
      double width;
    
      double height;
    
    
    
      //
    
      capacity(double l, 
    
               double a, 
    
               double p){  
    
        length=l;
    
        width=a;
    
        height=p;
    
      }
    
    
    
      //
    
      void CalcVolume () {
    
        double volume ;
    
        volume=large*wide*high;
    
        return volume;
    
      }
    
    } 
    
                
    Bir yapici sinifa eklenebilir ki sinifla ayni isimle, hic bir cesitsiz bir yontemin gotrunusune sahiptir.
    class example {
    
      public static void main(String Arg[]) {  
    
        capacity p1=new capacity(10,5,2);
    
        capacity p2=new capacity(25,6,2);
    
        double vol;
    
        vol=p1.CalcVolume();
    
        System.out.println("Volume: " + vol);  
    
    
    
        //
    
        vol=p2.CalcVolume();
    
        System.out.println("Volume: " + vol);  
    
      }
    
    } 
    Yeni islemci, bu sinifin yapicisina ihtiyac duyulan parametreleri onaylarken sini ornelerini yaratir. 
    Bir nesnenin referansi olmazsa, farz edilir ki bu nesne artik kullanilmayacak.Bu yuzden hafiza onun beslenmesine ayirir.Nesneleri yikmak icin kesin bir neden yok cunku bu yontem program infazina dogru otomatik bir tolla yurutulur.

    Yine de, "finalize" yontemi bir sinifa bitirici eklemek icin kullanilir.Yorumcu nesneyi yiktiginda bu yontem isleme girer.Bu yontemde nesneleri yikmadan once isleme almak icin faaliyetleri icerecegiz.

    Yontem Overload.

    Polymorphism (bir interface icin bircok yontem) oop'de temel PILLARS'lardan biridir.Java polymorphism'i overload yonteminin anlamlari tarafindan yerine getirir.

    Degisik yontemler ayni isimle bir sinif icinde tanimlanabilir, fakat farkli bir parametre listesi veya en azindan farkli donum cesitlerine sahip olmalidir.Overload yontemi cagrildiginda, Java yorumcusu, kullanilacak yontemerin versiyonunu ayirt etmek icin cagriyla onaylanmis argumanlari ve.veya cesitleri kullanir.

    Overloaded yontemi, bu polymorphism'i tamamen imkansiz yapsa da degisik gorevleri yerine getirilebilir.Bu yuzden overload bazi iliskileri tercihen belitmelidir.Ayni yolla yontemler ve yapicilar da overload yapilabilir.

    Arguman onylama

    Genel olarak programlama dilleri argumanlari onaylamak icin iki degisik yola izin verir:

    Java, yontemlere parametre onayinin iki anlamini destekler.Eger argumanlar basit bir ceside sahipse, deger tarafindan onaylanir, fakat arguman bir nesne ise, referans tarafindan onaylanir.

    Giris kontrolu

    OOP'deki baska bir temel PILLAR ENCAPSULATION'dir.Onu kullanan kodla veri birlesimi anlamina gelir.Daha da fazlasi ENCAPSULATION giris kontrolunu saglar.Bunu soylemek icin programin bir parcasi sinif uyelerini girmek icin yetenege sahip olmalidir.

    Java'daki giris ayrintilari 'public', 'private' ve 'protected'dir.

    Bir yontem veya bir ornek degisken "public" gibi tanimlandiginda, programin diger herhangi bir parcasindan etkilenebilir.Eger "private" olarak tanimlanirsa, onun kendi sinifinin diger yontemleri tarafindan etkilenebilir.Hatayla butun yontemler veya ornek degiskenler(uyeler) "public"tir.(kendi packet¿?)

    The 'protector' belirleyicisi HERENCIAS'la calistiginda kullanilir.(inheritances¿?), Ki bir sonraki konudur.

    KALIT

    OOP'yi tanimlayan uc eleman polymorphism,encapsulation ve butun kalitin sonudur.Genel bir sinif(super sinif) buna dogru tanimlanabilir.Genel karakterlerin bir serisiyle bu uretilmis sinif,bazi diger belirli karakterleri eklerken, daha fazla ozel siniflar tarafindan kalit alinabilir.

    A super sinifinin ozelliklerini miras alan B sinifini almak icin,B tanimlanmasinda koyacagiz.
     

    Class B extends A {
    
        // class definition
    
    }
    B sinifi A super sinifini tamamen icerir, bu kolayca kullanilabilen bir AUTONOMOUS sinifidir.Ayrica B sinifi her sinifin super sinifidir.

    Java farkli super siniflardan bir alt sinifa coklu kalita izin vermez.

    Eger "private" diye tanimlanan uyeler varsa bunlara kalit siniflarindan girilemez.Bir alt sinifin super sinifa girmesi gerektiginde "super" kelimesi kullanilabilir.Bu yolla yapiciyi veya alt sinif tarafindan saklanan supersinifin uyelerini cagirabiliriz.

    Alt sinifin bir yontemi super sinifin yontemi gigi ceside ve ayni isme sahipse, yontemin tekrar yazildigi soylenir.Bu ozellik Java'nin en onemli goruntu temellerinden "Dynamic selection method" unu kurar.Bu her cagirimda hangi yontemin kullanilacagi kararinin ilk degisken cesidine bagimli olarak yururlige kondugu anda yerine getirilecegi analamina gelir.

    Bir sonraki makalede kalit'in gucunu abstact siniflari ,interfaceler vb. konularla gorucegiz.In the next article we will see all the power of inheritance, with abstract classes, interfaces, etc.

    Referanslar


    Yazının dergiye gönderilen aslı İspanyolcadır, İngilizce'ye Javier Cano tarafından çevrilmiştir.
    Bu sanalyörenin bakımı Miguel Ángel Sepúlveda tarafından yapılmaktadır.
    © Jose M. Fernandez 1998
    LinuxFocus 1998