SORU
24 NİSAN 2013, ÇARŞAMBA


Java döküm arayüzleri

Birisi derleyici ilk döküm şikayet etmez, ama ikinci şikayet nasıl yaptığını bana açıklayabilir mi?

interface I1 { }
interface I2 { }
class C1 implements I1 { }
class C2 implements I2 { }

public class Test{
     public static void main(){
        C1 o1 = new C1();
        C2 o2 = new C2();
        Integer o3 = new Integer(4);

        I2 x = (I2)o1; //compiler does not complain
        I2 y = (I2)o3; //compiler complains here !!
     }
}

CEVAP
24 NİSAN 2013, ÇARŞAMBA


Ne zaman sen at o1 o3 (I2) söyle, derleyici bu sınıfın bir nesne aslında bir alt sınıf kendi ilan türü ve bu çok basitleştirir I2.

Integer sınıfıdırson, o3 olamaz Integer bir sınıfın bir örneği olması: yani derleyici yalan söylediğini biliyor. C1 ancak, son değildir o1olabilirI2 uygulayan C1 bir alt tür örneği.

Eğer C1 final yaparsanız, derleyici şikayet eder:

interface I1 { }
interface I2 { }
final class C1 implements I1 { }
class C2 implements I2 { }

public class Test{
     public static void main(){
        C1 o1 = new C1();
        C2 o2 = new C2();
        Integer o3 = new Integer(4);

        I2 y = (I2)o3; //compiler complains here !!
        I2 x = (I2)o1; //compiler complains too
     }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DJAndrewRyan

    DJAndrewRyan

    22 Ocak 2007
  • picster

    picster

    20 NİSAN 2006
  • TopDJMag TV

    TopDJMag TV

    29 Temmuz 2010