Wiem, że jest to bardzo proste pytanie, ale pracuję w Pythonie od dłuższego czasu i teraz muszę wrócić do Java, wydaje mi się, że mam problemy zmieniając chip i owijając głowę wokół podstawowego polimorfizmu Javy.Identyfikacja podpisu metody za pomocą dziedziczonych klas w abstrakcyjnych metodach Java
Czy można nadpisać (zaimplementować, by być precyzyjnym) metodę klasy "abstract
w Javie, używając jednej z dziedziczonych klas jako argumentu?
Pozwól mi wyjaśnić w bardzo prosty przykład (po „prawie oficjalny”example z kształtami)
class Shape {}
class Circle extends Shape {}
class Triangle extends Shape {}
abstract class ShapeDrawer {
abstract void draw(Shape s);
}
class CircleDrawer extends ShapeDrawer {
void draw(Circle c){
System.out.println("Drawing circle");
}
}
Czy istnieje jakiś sposób mający Java identyfikacji metodę draw
w klasie CircleDrawer
jak wdrożenie abstrakcji draw
w ShapeDrawer
? (Klasa Circle
rozciąga się od Shape
po wszystkich)
Inaczej umieścić: Co chciałbym jest to, że metoda klasy CircleDrawer
draw
akceptuje tylko instancje typu Circle
, ale w tym samym czasie, chciałbym powiedzieć kompilator Java, który jest void draw(Circle c)
, jest w rzeczywistości implementacją abstrakcyjnej metody znajdującej się w jej klasie nadrzędnej.
Z góry dziękuję.
Może po prostu czytam to źle, ale jeśli to nie jest to, czego chcesz, możesz podać przykład tego, czego chcesz? – Aify
@Aify, edytowałem pytanie opisujące to, co chciałbym osiągnąć. Mam nadzieję, że teraz jest jaśniej? Daj mi znać, jeśli nie jest. – BorrajaX
Nie zapomnij wyłączyć zasilania, zanim wyrzucisz ten chip. – markspace