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:
- Erişim değiştirici (ör.
public,private). - Dönüş türü (örneğin,
int,Stringveya herhangi bir şey döndürmezsevoid). camelCase'de Yöntem adı.- Parantez içindeki parametreler.
- Yöntem gövdesi küme parantezleri içine alınmıştır.
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:
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.
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:
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
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.
İ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
İ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.
İ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
İ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.
İ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