Benim asagidaki kodda 1 sorunum var.tam olarak anlayamadim exception nerede throw olacak.

10. interface Foo {}
1. class Alpha implements Foo {}
2. class Beta extends Alpha {}
3. class Delta extends Beta {
14. public static void main( String[] args ) {
15. Beta x = new Beta();
 16. // insert code here
17. }
  1. } Which code, inserted at line 16, will cause a java.lang.ClassCastException?

    A. Alpha a = x; B. Foo f = (Delta)x; C. Foo f = (Alpha)x; D. Beta b = (Beta)(Alpha)x;

soruldu: 04 Haz '12, 03:06

hale's gravatar image

hale
127343642
cevap kabul oranı: 0%

değiştirildi: 04 Haz '12, 04:24


Hocam, Cevap B dir. Beta tipindeki nesneleri, Foo tipinde referanslar ile temsil edebilirsin(upcasting). Delta ise Betanın bir alt sınıfıdır. Yani Delta sınıfı,Betaya ek olarak fazladan özellikler taşıyabilir.

beta nesnelerini delta gibi göstermek demek, (Vasıta -> Binek -> BMW->4x4) hiyerarşisini ele alırsak, BMW tipindeki bir nesnenin 4x4 olarak ifade edilmesine benzer. Ama aracımız 4 çeker bir araç değildir.

permanent link

cevaplandı: 04 Haz '12, 07:31

etahan's gravatar image

etahan
161
cevap kabul oranı: 0%

Sorunun cevabi B olacak bence. Cünkü Beta kalitim hiyerarsisinde Delta dan üst te. O bakimdan bir Beta nesnesi olan "x" kendisinden altta olan bir Delta ya cevrilemez.

Özellikler detaylidan genele dogru sinirlanabilir ancak tersi bir durum söz konusu olmaz. Delta Beta yi genisletip, daha detayli özellikler ekler. Ancak nesne X bir Beta nesnesi ve siz onu genisletip Delta nin sahip oldugu özelliklerle donatamazsiniz. Özellik yoksa yoktur. Ancak tersine, Beta da var olan ek özellikler, eger biz onu Alpha tipine cevirirsek, gizlenmis olur, cünkü Beta da Alpha yi genisletmekte.

permanent link

cevaplandı: 04 Haz '12, 04:56

mceliksoy's gravatar image

mceliksoy ♦
6.5k84988
cevap kabul oranı: 25%

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,077
×2

Soruldu: 04 Haz '12, 03:06

Görüntüleme: 1,057 kez

Son güncelleme: 04 Haz '12, 07:31

powered by BitNami OSQA