this Anahtar Sözcüğü

Salı, Mayıs 12, 2015 kustemura 0 Yorum

Bu yazımda this anahtar sözcüğünün kullanımını anlatacağım , bu konuyu daha iyi anlamak için bir önceki yazım Java - Yapılandırıcılar ( Constructors ) konusuna bakmakta fayda var.

package com.blogger_project;

class Rectangle {
 double width;
 double height;
 double depth;

 Rectangle(final double w, final double h, final double d) {
  width = w;
  height = h;
  depth = d;
 }
 Rectangle(double w,double h){
  width = w;
  height = h;
 }

 Rectangle() {
  width = -1;
  height = -1;
  depth = -1;
 }

 double volume() {
  return width * height * depth;
 }
}

Bir önceki örnekde parametreli yapılandırıcımızı tanımlarken parametre isimlerini w , h , d olarak tanımlamıştık.Farklı isimlerde tanımlamamızın sebebi sınıfın değişkenleri ile aynı isme sahip olmamasından kaynaklanır. this anahtar sözcüğü ile sınıfın değişkenlerini referans edip aynı ismi verebiliriz.Bunu bir örnekle inceleyelim ;


package com.blogger_project;

class Rectangle {
 double width;
 double height;
 double depth;

 Rectangle(final double width, final double height, final double depth) {
  this.width = width;
  this.height = height;
  this.depth = depth;
 }
 
 Rectangle(double width,double height){
  this.width=width;
  this.height=height;
 }
 
 Rectangle() {
  width = -1;
  height = -1;
  depth = -1;
 }

 double volume() {
  return width * height * depth;
 }
}

Burada ki this. ile başlayan değişkenlerin hepsi aslında sınıfın değişkenlerini referans etmektedir.Daha sonra koda baktığımızda anlaşılabilirliği arttırmak için bu yöntem kullanılabilir.

this'in Diğer Kullanımı


this(argüman listesi);

Burada argüman listesine karşılık gelen yapılandırıcı çağrılır.
package com.blogger_project;

package com.blogger_project;

class Rectangle {
 double width;
 double height;
 double depth;

 Rectangle(final double width, final double height) {
  this.width = width;
  this.height = height;
 }

 Rectangle(final double width, final double height, final double depth) {
  this(width, height);
  this.depth = depth;
 }

 Rectangle() {
  this(-1, -1, -1);
 }

 double volume() {
  return width * height * depth;
 }
}
Bu programda bir önceki program ile aynı işlemi yapar.Üç parametreli constructor çağrıldığında iki parametreli constructor'e göndermede bulunur.

1 - Aynı anda hem this() hemde super() kullanılamaz.
2 - Yapılandırıcıya ait herhangi bir değişken kullanılamaz.

0 yorum :