Arama butonu
Bu konudaki kullanıcılar: 1 misafir
7
Cevap
227
Tıklama
0
Öne Çıkarma
Java'da protected access
S
7 yıl
Yüzbaşı
Konu Sahibi

Java çalışırken beni zorlamış bir örnektir, hala tam izah etmekte zorlanırım. Java bilgisini ölçmek isteyen baksın, acele cevap yazmayın, boş cevaplara aldırış etmeyin.
MyItem türü elemanlardan oluşan bir MyQ class ım var. İçinde head ve tail e işaret eden iki protected field var, add() ve remove() public metotları var. Başka bir pakette(!) UniqMyQ olarak bunu extend ediyorum, add() ve remove() override ediyorum ve bir de unique() diye metot ekliyorum. add() ve remove() inherit edilen protected field lara direkt erişebiliyor, unique() metotu UniqMyQ türü başka nesnelerin protected field'ına direkt erişebiliyor, tamam. Fakat MyQ türü nesnenin protected field ına erişemiyor. A UniqMyQ is-a MyQ relationship olmasına rağmen bu neden mümkün değildir?
 
package pk1;

public class MyQ {
protected MyItem head;
protected MyItem tail;

public void add(MyItem t) { }
public MyItem remove() { return null; }
}

 
package pk1;

public class MyItem {
// TODO
}

 
package pk2;

import pk1.*;

public class UniqMyQ extends MyQ {
@Override
public void add(MyItem t) {
MyItem s = head;
// TODO
}

@Override
public MyItem remove() {
MyItem s = head;
return null; // TODO
}

public void uniq(UniqMyQ otherq) {
MyItem s = otherq.head;
// TODO
}

/* UniqMyQ is-a MyQ olmasina ragmen bu neden hatali?
public void uniq(MyQ otherq) {
MyItem s = otherq.head;
// TODO
} */

}



< Bu ileti mini sürüm kullanılarak atıldı >