## 参数列表
与被重写方法的参数列表必须完全相同
```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.
```