Javada super ve this keywordlerinin aynı constructor içerisinde kullanımı mümkün mü?Mümkün değilse sebebi nedir?

soruldu: 22 Şub '15, 13:26

anilemreozcelik's gravatar image

anilemreozcelik
1406812
cevap kabul oranı: 0%


Aslında kullanılamaması için hiç bir sebep yok fakat java super() metodunda önce başka bir işleme izin vermemektedir. Aşağıda farklı örnekler ile izah etmeye çalıştım.

Örnek kod 1:

public class K {
    public K()
    {

    }
}
public class M extends K{

    private String name="";
    public M()
    {
        //Superden önce başka bir kod çalışılamaz
        super();
        this.name = "Müslüm ÖZTÜRK";
    }
}

Örnek Kod 2:

public class K {
     public K(String name)
    {
     String ad=name;  
    }
}

public class M extends K{

    private String name="";
    public M()
    {
        //Superden önce başka bir kod çalışılamaz
        super("Şehri ÖZTÜRK"); //Böyle bir kullanım hata vermeyecektir.
        this.name = "Müslüm ÖZTÜRK";
    }
}

public class M extends K{

    private String name="";
    public M()
    {
        //Superden önce başka bir kod çalışılamaz
        super(this.name); // Böyle bir kullanımda derleyici hata verecektir.Çünkü M class'ı oluşturulma aşamasındadır. ve super() den önce başka bir kod çalışılamaz.
        this.name = "Müslüm ÖZTÜRK";
    }
}

Eğer illaki M class' ının içindeki name değişkeninin değerini super class'ın constructoruna göndermek istiyorsan aşağıdaki örnekteki gibi name değişkeni static olmalıdır. Dikkat edilirsen this anahtar kelimesi yine kullanılmaz.

public class M extends K{

    private static String name="";
    public M()
    {
        //Superden önce başka bir kod çalışılamaz
        super(M.name); //Böyle bir kullanım hata vermeyecektir.
        this.name = "Müslüm ÖZTÜRK";
    }
}
permanent link

cevaplandı: 22 Şub '15, 14:12

M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Müslüm ÖZTÜRK
10.7k103691
cevap kabul oranı: 28%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,079

Soruldu: 22 Şub '15, 13:26

Görüntüleme: 368 kez

Son güncelleme: 22 Şub '15, 14:12

powered by BitNami OSQA