Sponsor Reklam 


17.09.2008 (01:34)

 this ve super Anahtar Sözcükleri, keywords 
Bir sınıf içerisindeki değişkenler ile metotta yer alan aynı isimde değişkenlerin karışmaması için this anahtar sözcüğü kullanılır. Şu örnekte kullanımını görebilirsiniz:

package kodcu.net;

public class Rectangle {

  private int rectangleWidth;
  private int rectangleHeight;

  // Constructor
  public Rectangle(int rectangleWidth, int rectangleHeight)  {
    this.rectangleWidth = rectangleWidth;
    this.rectangleHeight = rectangleHeight;
  }
 
  // This method calculates rectangle's area.
  public int calculateArea() {
    return (rectangleWidth * rectangleHeight);
  }

}

Görüldüğü gibi this keyword'ü yapılandırıcıda (constructor) parametre olarak alınan değişkenler ile sınıfın değişkenleri aynı isimdedir. Bunların karışmaması this kullanılmıştır. Constructor şu şekilde de kullanılabilir:

  // Constructor
  public Rectangle(int width, int height)  {
    this.rectangleWidth = width;
    this.rectangleHeight = height;
  }

Ya da şu şekilde de kullanılabilir:

  // Constructor
  public Rectangle(int width, int height)  {
    rectangleWidth = width;
    rectangleHeight = height;
  }

super kullanımı ise alt sınıfların üst sınıfa ait private olmayan üyelerine erişmede kullanılmaktadır. Bildiğimiz üzere overriding ile üst sınıfların metotları geçersiz kılınmaktadır. Fakat üst sınıfın bu gizlenen metotlarına ulaşmak istiyorsak super anahtar sözcüğü ile bunu yapabiliriz. Yine benzer şekilde üst sınıfa ait constructor'a da super() çağrısı ile erişebiliriz. Kendi sınıfına ait constructor'a ise this() çağrısı ile erişilebilir.

Şu başlıkta yer alan örnekte super ve this kullanımları da yer almaktadır.

Şu şekildeki bir çağrı da daha üst sınıflardaki metota yapılan bir çağrı örneğidir:
super.super.super.getWidth();

Şu örnekte de this'in farklı bir kullanımı görülmektedir:
public class A {

  private B b = new B(this);

  // Constructor
  A() { }

}
b nesnesi oluşturulurken onun yapılandırıcısına sınıfın nesnesi gönderilmektedir. this ile belirtilen kendi sınıfının (A'nın) bir örnek kopyasıdır.
Imza: admin








Yazilar kaynak gosterilmeden kopyalanamaz © www.kodcu.net // Twitter