Mam następujące klasy abstrakcyjne:rodzajowych Java i dziedziczenie
public abstract class AbSuperClass1<K,S> {
//class definition
}
oraz:
public abstract class AbSuperClass2<K,S> {
public abstract <Q extends AbSuperClass1<K,S>> void method(Q arg);
...
}
Mam następnie dwa konkretne implementacje
public class Concrete1 extends AbSuperClass<String, String>{
//class definition
}
oraz:
public class Concrete2 extends AbSuperClass2<String, String>{
public void method(Concrete1 arg){
//method definition
}
}
Nie zostanie to jednak skompilowane, ponieważ Concrete1 nie jest uznawane za poprawny typ dla argumentu metody w Concrete2, ale o ile widzę Concrete1 ma poprawny typ, ponieważ rozszerza AbSuperClass1.
Gdzie się mylę?
Jeśli to możliwe, sugeruję użycie Eclipse jako środowiska do napisania kodu Java. Eclipse pokazałby dokładnie, co było nie tak i dostarczył menu rozwijane, aby dodać brakującą funkcję jednym kliknięciem myszy. Ten rodzaj zdolności może znacznie przyspieszyć twoją krzywą uczenia się i czas rozwoju. –
'public abstract