@Override这个标签有什么用呢。。。。。。
其实我也是比较迷茫,查了一下,三个作用吧
1. 可以给你当作注释用,感觉这个也不能说明什么,注释也没什么用。
2. 可以告诉读你代码的人,这是对它父类方法的重写,其实很多代码规范没有为什么,规范就是规范,代码的可读性还是很重要的。
3. 编译器可以给你验证@Override下面的方法名称是否是你父类中所有的,如果没有就会报错。
public class Animal {
String name;
boolean sound;
String color;
public Animal() {
this.name="怪物";
this.sound=true;
this.color="黑色";
}
public Animal(String name, boolean sound, String color) {
this.name = name;
this.sound = sound;
this.color = color;
}
public void eatFood(){
System.out.println("我是一个动物,我什么都吃!!!");
}
public void showAnimal(){
String str=sound?"会叫":"不会叫";
System.out.println("这是一只"+color+"的"+name+",它"+str);
}
}
class Cat extends Animal{
public Cat() {
this.name="波斯猫";
this.sound=true;
this.color="白色";
}
public Cat(String name, boolean sound, String color) {
super(name, sound, color);
}
@Override
public void eatFood() {
System.out.println("猫应该吃的食物!!!");
}
}
class Fish extends Animal{
public Fish() {
this.name="金鱼";
this.sound=false;
this.color="红色";
}
public Fish(String name, boolean sound, String color) {
super(name, sound, color);
}
@Override
public void eatFood() {
System.out.println("鸟类应该吃的食物!!!");
}
}
比如当你想要在子类中重写父类的一个方法,但是你把名字打错了,当你写了@Override编译器会
提示你,你写的这个方法父类中没有;但是如果你没有写@Override编译器就会
觉得这个是你子类中写的新的方法,并不会报错,到时候你debug还是很麻烦的一件事。