Java'nın C++ ve C#'a göre en büyük limitasyonu bana göre;
Kalıtımın sadece tek bir sınıf üzerinden alınabilme zorunluluğudur. Mesela siz A sınfı ve B tanımlayın bunlar sizin temel sınıflarınız olsun ve siz A ve B sınıflarından kalıtım alarak C sınıfını oluşturmak istiyorsunuz.
Java'da bu direkt olarak yapamazsınız. Bunun sebebi olarak yazılım içinde belirsizlik yaratılmasının önlenmesi olarak belirtilmiş.
Bu tür bir iş için şöyle bir hiyerarşi izlemeniz gerekiz;
Önce A sınıfının kalıtımını alırsınız daha sonrada A sınıfının kalıtımını almış sınıfı B sınıfı ile genişletirsiniz.
Örnek implementasyon :
PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
class A {
protected String var;
void go() {
}
}
class B extends A{
void come(){
}
}
class C extends B{
void dsd(){
String test = C.super.var; //A'dan gelen özellik
C.super.go(); //A'dan gelen metod
C.super.come(); //B'den gelen metod
}
}