Bölüm 4 - Objects and Classes 4

Implicit and Explicit Parameters

public void raiseSalary(double byPercent){
    double raise = salary * byPercent / 100;
    salary += raise;
}

Bu methoda örneğin şyöel bir şey yapalım.

number007.raiseSalary(5);

Biz number007.salary değerini %5 arttırdık. Budra 5 değerini verdiğimiz ve belirttiğimiz için buna explicit parameter diyouz. Yani şöyle bir süreç olur method içerisinde

double raise = number007.salary * 5 / 100;
number007.salary += raise;

Burda diğer parametre olan number007 ise bir implicit parametredir.

Her method içerisinde bulunan this keywordü implicit parametreye işaret eder yani şöyle.

public void raiseSalary(double byPercent){
    double raise = this.salary * byPercent / 100;
    this.salary += raise;
}

Private Methods

Eğer ki bir methodu public değil private yapmak istiyorsak direkt olarak public keywordünü private olarak değiştirmemiz yeterlidir.

Bu methodun kullanım amacı şudur yani bu class'ın dışında herhangi bir yerde zaten kullanılmayacak ve sadece bu class'a hizmet edecektir.

Final Instance Fields

Eğer ki bir instance field'ını final olarak tanımlarsak bunu initialize etmek zorundayız object eğer ki constructed olursa. Yani bunun garantisini vermeliyiz bu field'a değer olarak her constructorun sonunda değeri atanacaktır diye...

private final String name;

final modifieri normal olarak tipi primitive yada immutable classlar için kullanışlıdır. Çünkü final değeri değil artık bizim için referansı sabitler.

Primitive -> değerleri değiştiremeyiz. IMMUTABLE Object -> REFERANS değişmez. MUTABLE OBJECT → içeriği değişebilir, referans değişemez

Eğer ki biz bunu bir mutable class üzerinde kullanmak istersek:

private final StringBuilder evaluations;
  • evaluations değişkeni başka bir StringBuilder nesnesini gösteremez
  • ama işaret ettiği StringBuilder üzerinde değişiklik yapabilirsin
evaluations = new StringBuilder();  // ✔ allowed (constructor içinde)
evaluations = new StringBuilder();  // ❌ forbidden (başka yerde)
evaluations.append("test"); // ✔ allowed
evaluations.append("hello"); // ✔ allowed
← Bloğa Dön