|
|
Bir class yapalım ama bu class bir application olmasın. Bu sadece başka bir uygulamaya hizmet verecek bir class olsun.
Göster Gizle Kopar Satır Gizle Satır Göster |
1 public class GreetingPrinter{ 2 public static void printLine(String line){ 3 System.out.println(line); 4 } 5 public static void printGreeting(String greeted){ 6 printLine("Merhaba "+ greeted); 7 } 8 }
Şimdi de GreetingPrinter adlı class'ı kullanan bir application yapalım.
Göster Gizle Kopar Satır Gizle Satır Göster |
1 public class GreeterWithClassUse{ 2 public static void main(String[] args){ 3 GreetingPrinter.printLine("Dunya"); 4 } 5 }
Burada iki class'ın işbirliği sözkonusu. GreetingPrinter ekrana bir selamlama basabiliyor. GreeterWithClassUse ise bu class'ı kullanarak "Merhaba Dünya" diyebiliyor. Aynı şekilde bir başka application da bu class'ı kullanabilir.
Göster Gizle Kopar Satır Gizle Satır Göster |
1 public class AnotherGreeterWithClassUse{ 2 public static void main(String[] args){ 3 GreetingPrinter.printLine("Evren"); 4 } 5 6 }
Bir class yapmanın avantajı, bir işlemi bir kere yapmak, bir daha da oradan kullanmaktır. GreeterPrinter'da bir değişiklik yapma ihtiyacı duyarsak öbür class'lar otomatik olarak duruma adapte olacaktır. Örneğin, GreeterPrinter.printGreeting()'i
public static void printGreeting(String greeted){ printLine("Merhaba "+ greeted+"! "); }
şeklinde değiştirelim. İki uygulama da çalışınca selamlamayı ünlemle yapacaktır.
GreetingPrinter görüldüğü gibi sadece "Merhaba diyebilmektedir. Bunu kullanan classlardan birinin "Ne Haber?" deme hakkı yoktur. Bunun için başka bir class yapalım :
Göster Gizle Kopar Satır Gizle Satır Göster |
1 public class FlexibleGreetingPrinter{ 2 public static void printLine(String line){ 3 System.out.println(line); 4 } 5 public static void printGreeting(String greeted,String salutation ){ 6 printLine(salutation+ " "+ greeted + "!" ); 7 } 8 }
Bu printGreetings() methodu bir yerde
FlexibleGreeting.printGreetings("Dünya","Merhaba");
şeklinde başka bir yerde
FlexibleGreeting.printGreetings("Dünya","Ne Haber");
diye çağrılabilir.
İki kullanımda da mutlaka Merhaba veya Ne Haber" diye bir selamlama verilmelidir. Oysa aksi belirtilmediği sürece "Merhaba" demesi sağlanabilir.
Göster Gizle Kopar Satır Gizle Satır Göster |
1 public class FlexibleGreetingPrinterWithDefault{ 2 public static void printLine(String line){ 3 System.out.println(line); 4 } 5 public static void printGreeting(String greeted,String salutation ){ 6 printLine(salutation+ " "+ greeted + "!" ); 7 } 8 public static void printGreeting(String greeted){ 9 printGreeting(greeted,"Merhaba"); 10 } 11 }
Bu şekilde benzer işlevi gören aynı adlı iki method iki farklı şekilde kullanılabilir. Bir yerde
FlexibleGreetingPrinterWithDefault.printGreeting("Dünya","Nasılsın");
şeklinde çaırılabilir. Bir başka yerde
FlexibleGreetingPrinterWithDefault.printGreeting("Dünya");
denebilir. İkinci durumda biz söylemesek de "Merhaba" diyecektir. Buna overloading denir. İkinci bir versiyon yazarak printGreeting()'i overload etmiş olduk.
|
|