У меня есть 2 перегруженных метода, один из которых запускает суперкласс и тот, который выполняет подкласс. я ожидал бы, что при отправке подкласса java будет знать, как запустить метод, специфичный для подкласса. Увы, он запускает один из суперкласса. Вот пример:Как заставить java-методы запускать определенные реализации
public class Test {
static class SuperClass {}
static class SubClass extends SuperClass {}
static void stuff(SuperClass superclass) {
System.out.println("IN 1");
}
static void stuff(SubClass subClass) {
System.out.println("IN 2");
}
public static void main(String[] args) {
SuperClass aClass = new SubClass() ;
stuff(aClass) ;
}
}
Я бы ожидать "IN 2", чтобы быть напечатаны, но вместо этого я получаю "IN 1"
так у меня есть 2 вопроса: 1. Почему это происходит 2. Как достичь желаемого результата?
Заранее спасибо
Подробная информация о том, как это работает: http://docs.oracle.com/javase/specs/jls/se7/html /jls-15.html#jls-15.12 –