## 参数列表 与被重写方法的参数列表必须完全相同 ```java class AnimalShelter { public Animal getAnimals(Animal animal) { return null; } } class DogShelter extends AnimalShelter { @Override public Dog getAnimals(Dog dog) { return null; } } ``` 会出现`Method does not override method from its superclass` 的编译错误, 因为与父类或接口中的参数列表完全一致,是**一模一样**的意思,就算参数之间是父子类也不行! ## 返回类型 与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类 下面这样是 OK 的 ```java class AnimalShelter { public Animal getAnimals() { return null; } } class DogShelter extends AnimalShelter { @Override public Dog getAnimals() { return null; } } ``` 由于数组可以[协变](协变.md),下面这样也是 ok 的 ```java class Animal {} class Dog extends Animal {} class AnimalShelter { public Animal[] getAnimals() { return new Animal[10]; } } class DogShelter extends AnimalShelter { @Override public Dog[] getAnimals() { return new Dog[10]; } } ``` ```Java **Web login code.** Dear Luis, we received a request from your account to log in on my.telegram.org. This is your login code: u6rtPmEFuM4 Do **not** give this code to anyone, even if they say they're from Telegram! **This code can be used to delete your Telegram account.** We never ask to send it anywhere.  If you didn't request this code by trying to log in on **my.telegram.org**, simply ignore this message. ```