как получить реализацию суперкласса из подкласса с помощью повышения или другими методами?

я просто хотел знать, как получить реализацию суперкласса, используя, например, подкласс.

class Animal {
    void poo() {
        System.out.println("general poo");
    }
}

class Horse extends Animal{
    void poo() {
        System.out.println("horse poo");
    }
}

Animal animal1 = new Horse(); 
// using this I get the implementation of the Horse class's methods
animal1.poo(); //should return horse poo

попытался преобразовать его, чтобы получить реализацию суперкласса, но безрезультатно

((Animal)animal1).poo() // still returns the horse class's implementation of the method

Как получить реализацию суперкласса с помощью объекта animal1?


person chip    schedule 22.11.2012    source источник
comment
Это было бы возможно, если бы это был С#.   -  person Eng.Fouad    schedule 22.11.2012
comment
Это невозможно. См. stackoverflow.com/questions /2432249/   -  person Addict    schedule 22.11.2012


Ответы (2)


В Java не следует переопределять метод суперкласса, если только новый метод не предназначен для полной замены всех внешних вызовов этого метода.

В реализации подкласса вы можете использовать, например. super.toString() для ссылки на непосредственный метод суперкласса.

person Patricia Shanahan    schedule 22.11.2012
comment
Это. Horse.poo должен полностью соответствовать контракту/спецификации Animal.poo; если это не так, у вас проблемы с дизайном. - person SJuan76; 22.11.2012
comment
@Патриция. Спасибо за ответ. Я думаю, лучший способ сделать это — создать метод, который будет выполнять функцию super.method(). :D - person chip; 22.11.2012
comment
Вам нужно решить, какой нормальный способ делать какашки в вашем новом подклассе. Это должно переопределить метод суперкласса. Вы можете либо добавить новый метод, чтобы сделать что-то новое, либо добавить новый метод, чтобы сделать версию суперкласса. Тем не менее, я предлагаю тщательно проанализировать ваш дизайн — столкновение с этой проблемой часто является симптомом путаницы в отношении того, для чего предназначены методы. - person Patricia Shanahan; 22.11.2012

Кроме того, это невозможно, это не имеет смысла, попробуйте переписать свой класс.

person AlexWien    schedule 22.11.2012
comment
да, я согласен на это. как и тестовые вопросы, с которыми я сталкиваюсь, когда устраиваюсь на работу. - person chip; 22.11.2012