2 Şubat 2014 Pazar

Java'da metotlara aşırı yükleme (Overloading)


       Java'nın bize sağladığı büyük bir kolaylık, aynı isimde birden fazla metot oluşturabilmemizdir. Tabii ki bu durumda metotları birbirinden ayırt edecek şeyler olmalıdır. Bu da aynı isimdeki metotların aldığı parametre sayıları ve türleridir.
       Peki parametre farklılığından kastımız nedir ?
1-) Örneğin KareAl isminde 2 metodumuz olsun. Ve ikisi de tek parametre alsın. Bu durumda bu 2 metodun aldığı parametre türü aynı olamaz! Yani birisi mesela integer türde parametre alıyorsa diğer metot integer haricinde bir türde parametre almalıdır.

2-)KareAl isminde yine 2 metodumuz olsun. Bu iki metodun aldığı parametre saysı farklı ise bu durumda aldıklarını parametre türlerini kontrol etmeye gerek yok. Yani ilk metot bir tane integer parametre alıyorsa, ikinci metot 2 parametre alabilir. Bu durumda 2. metot istenilen türde parametreler alabilir.

ÖRNEK1: Java'da bir sayının karesini almak.
=====================================================================
public class JavaApplication9 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
 
    System.out.println(KareAl(5));       /* fonksiyona integer değer gönderildi.*/
    System.out.println(KareAl(4.5));    /*fonksiyona double değer gönderildi*/
    }
    public static double KareAl(double gelen) { /*double değer gelmesi halinde bu metot çalışır */
    return gelen*gelen;
    }
    public static double KareAl(int gelen) {  /*integer değer gelmesi halinde bu metot çalışır */
    return gelen*gelen;
    }
=======================================================================

ORNEK2: Javada farklı sayıda parametre alan aynı isimde metotlar kullanmak.

=======================================================================

public class JavaApplication9 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
 
    fnk(10,20);   /* fonksiyona 2 parametre gönderildi */
    fnk(5);        /* fonksiyona tek parametre gönderildi */
    }
 
    public static void fnk (int gelen1, int gelen2) { /* 2 parametre gönderilirse bu metot çalışır */
    System.out.println("fonksiyona 2 parametre gönderildi");
    }
    public static void fnk (int gelen) {    /* tek parametre gönderilirse bu metot çalışır */
    System.out.println("fonksiyona tek parametre gönderildi");
    }
}

========================================================================


Yararlı olması dileği ile....

Hiç yorum yok:

Yorum Gönder