Ana içeriğe geç
Modül 2 · Ders 2 ders 2Kurstaki 4/14~12 min
Modül dersleri (2/2)

Yöntemler ve Aşırı Yükleme

Yöntemler bir nesnenin davranışını tanımlar. Bunları, nesnenin örnek alanları veya gelen parametreleri üzerinde çalışan, bir sınıf içinde bildirilen işlevler olarak düşünebiliriz.

Bir Yöntem Tanımlama

Java'daki bir yöntem aşağıdakilerden oluşur:

  1. Erişim değiştirici (ör. public, private).
  2. Dönüş türü (örneğin, int, String veya herhangi bir şey döndürmezse void).
  3. camelCase'de Yöntem adı.
  4. Parantez içindeki parametreler.
  5. Yöntem gövdesi küme parantezleri içine alınmıştır.
Java
class Person {
    String name;

    public Person(String name) {
        this.name = name;
    }

    // Method with return type String
    public String greet() {
        return "Ciao, mi chiamo " + name;
    }
}

Bir Yöntemin Çağrılması

Oluşturulan bir nesnede bir yöntemi çağırmak için . nokta gösterimini kullanırız:

Java
public class Main {
    public static void main(String[] args) {
        Person p = new Person("Marco");
        String message = p.greet(); // Calling the method
        System.out.println(message);
    }
}

Yöntem Aşırı Yüklemesi

Java'da, aynı sınıftaki iki veya daha fazla yöntem, farklı bir parametre listesine (sayı, sıra veya parametre türü açısından) sahip oldukları sürece aynı ada sahip olabilir. Bu kavram Aşırı Yükleme olarak bilinir.

Derleyici, çağrı sırasında aktarılan argümanları analiz ederek hangi yöntemin çağrılacağına karar verir.

Java
class Printer {
    // Method to print an integer
    public void printValue(int number) {
        System.out.println("Intero: " + number);
    }

    // Overloaded method to print a string
    public void printValue(String text) {
        System.out.println("Testo: " + text);
    }
}

Değere Göre Parametre Geçişi

Java'da tüm parametreler değere göre (değere göre geçiş) iletilir. Bu, bir yönteme bir argüman ilettiğinizde Java'nın değişkenin değerinin bir kopyasını oluşturup bunu yönteme ilettiği anlamına gelir.

  • ilkel türler için, yöntemin dışındaki orijinal değer, yöntemin içinde değiştirilse bile hiçbir zaman değişmez.
  • nesneler/referanslar için nesneye yapılan referans kopyalanır. Bu, orijinal nesnenin işaret ettiği bellek adresini değiştiremesek de, onun dahili durumunu (örneğin, alanlarını) değiştirebileceğimiz ve bu değişikliklerin dışarıda görülebileceği anlamına gelir.

Aşırı Yükleme Sınırlamaları: Dönüş Türü

Yalnızca dönüş türüne dayalı olarak bir yöntemi aşırı yükleme yapamayacağınızı unutmamanız önemlidir. Örneğin aşağıdaki kod derleme hatasına neden olacaktır:

Java
class Example {
    // ERROR: The signature of the two methods is considered identical
    public int getNumber() { return 42; }
    public double getNumber() { return 42.0; }
}

Derleyicinin, derleme zamanında hangi sürümün çağrılacağına karar vermek için yalnızca parametrelere dayalı yöntemler arasında ayrım yapması gerekir (aşırı yükleme, derleme zamanında çözülür).


Kendin dene

Egzersiz#java.m2.l2.e1
Denemeler: 0Yükleniyor…

Hesap Makinesi sınıfına, iki sayının toplamını döndüren bir public int add(int a, int b) yöntemi ekleyin. Ana yöntemde, bu yöntemi calc nesnesinde çağırın ve sonucu bir tamsayı değişkenine atayın.

Düzenleyici yükleniyor…
İpucu göster

Yöntemi şu şekilde bildirin: public int add(int a, int b) { return a + b; }` ve onu ana yöntemde `int result = calc.add(5, 10);` olarak çağırın.

3 denemeden sonra çözüm mevcut

Egzersiz#java.m2.l2.e2
Denemeler: 0Yükleniyor…

İki double parametreyi kabul eden ve bunların toplamını döndüren başka bir yöntem oluşturarak Hesap Makinesi sınıfındaki add yöntemini aşırı yükleyin.

Düzenleyici yükleniyor…
İpucu göster

`public double add(double a, double b) { return a + b; }` doğrudan ilk ekleme yönteminin altında.

3 denemeden sonra çözüm mevcut

Egzersiz#java.m2.l2.e3
Denemeler: 0Yükleniyor…

İki sayının çarpımını döndüren Calculator sınıfına public int multiple(int a, int b) yöntemini ekleyin. Ana yöntemde, bu yöntemi calc nesnesinde çağırın ve sonucu bir tamsayı değişkenine atayın.

Düzenleyici yükleniyor…
İpucu göster

Yöntemi şu şekilde bildirin: public int multiple(int a, int b) { return a * b; }` ve onu ana yöntemde `int result = calc.multiply(5, 10);` olarak çağırın.

3 denemeden sonra çözüm mevcut