1) Как уже говорили другие парни, вызовите super.Scream()
, если вы хотите вызвать переопределенный метод из суперкласса.Вы получите следующий вывод:
I'm an animal
I'm a mammal
I'm a tiger
2) Tiger реализует Mammal, поэтому Mammal является суперклассом Tiger, а так как Animal является суперклассом Mammal, Tiger также реализует Animal.Другими словами: суперклассами Tiger являются Tiger и Animal.
// all of this is valid:
Tiger tiger = new Tiger();
Mammal mammal = tiger;
Animal animal = tiger;
Если вы вызываете animal.Scream()
, виртуальная машина знает, что anmial
имеет тип Tiger и вызывает метод scream, объявленный в классе Tiger.См Полиморфизм .