Merhaba.Classlarim şoyle

public interface I {

}

public class A implements I{

}

public class B extends A{

}

public class C extends B{

}

public class D {

    public static void main(String[] args) {
        A a = new A();
        B b = new B();

        a = (I) b;//boyle yazdigim zaman I cannot be converted to A hatasini veriyor
        //eger cannot be converted ise peki o zaman neden
       a = (B)(I) b;//kendim elimle cast yaptigim zaman hic bir error vermiyor.shu shekilde hata yok
    }
}

soruldu: 10 Şub '15, 12:06

Serxan's gravatar image

Serxan
51691106107
cevap kabul oranı: 46%


a = (I) b;

Bu kısımda a değişkenine interface değerini atamaya çalıyorsun. Interface içi dolu olmayan metodlar içerir. Hiç bir zaman aşağıdaki gibi bir kullanım yapmayız.

A a = new I();//Böyle bir kullanım olmaz

yani eşitliğin sağ tarafına concrete sınıflarımızı new' leriz örneğin aşağıdaki gibi

I i=new A();

Gelelim ikinci kısıma:

a = (B)(I) b;

Burada concrete olan b sınıfını interface' e cast edip sonra tekrardan concrete sınıf olan b'ye cast ettiğiniz için hata vermemiştir.

Umarım anlatmak istediğimi yazıya dökebilmişimdir.

İyi çalışmalar.

permanent link

cevaplandı: 10 Şub '15, 13:04

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
×6

Soruldu: 10 Şub '15, 12:06

Görüntüleme: 359 kez

Son güncelleme: 10 Şub '15, 13:04

powered by BitNami OSQA