java中重写⽗类⽅法加不加@Override详解
java重写⽗类⽅法加不加@Override
这个是我在刚学习java时遇到的问题,希望能给像我⼀样的新⼿学习时带来帮助,如有错误请指正,谢谢!
class Father{
public String name;苦瓜书屋
public int age;
public Father(){
}
public void work(){
System.out.println("盖房⼦");
}起来歌词
}
怎样写学习计划class Son extends Father{
public int weight;
public Son(){
}迫组词
public void work(){
排骨怎么烧好吃System.out.println(i);
}
}
上⾯⼦类的work()⽅法和基类work()⽅法的控制器类型(包括返回值类型、参数等)是完全⼀致的,这种情况加不加
@Override都是可以的,都可以对基类⽅法进⾏重写。
因为不写的情况下,java虚拟机会进⾏⾃动识别。
class Son extends Father{
员工关系管理public int weight;
public Son(){
}
public int work(int i){
System.out.println();
}
}
在上⾯这种情况下,work()⽅法会被系统认为是⼦类新定义的⽅法,没有继承基类,这也是被允许的。
class Son extends Father{
public int weight;
public Son(){
}
public int work(){
System.out.println();
return 1;
中国名牌开关插座
}
}
但是这种情况只修改返回值类型时,是不被允许的,其仍被看做基类的重写,但是返回值类型变了,就会被编辑器认为基类重写返回值类型不⼀致⽽报错。
所以存在即合理,在编写代码时如果需要对基类进⾏重写还是加上@Override⽐较好,还可以检测⼀些容易忽略的错误。
@Override的作⽤
@Override是伪代码,表⽰重写(当然不写也可以),不过写上有如下好处:
1、可以当注释⽤,⽅便阅读
2、编译器可以给你验证@Override下⾯的⽅法名是否是你⽗类中所有的,如果没有则报错。
例如,你如果没写@Override,⽽你下⾯的⽅法名⼜写错了,这时你的编译器是可以编译通过的,因为编译器以为这个⽅法是你的⼦类中⾃⼰增加的⽅法。
举例:在重写⽗类的onCreate时,在⽅法前⾯加上@Override 系统可以帮你检查⽅法的正确性。
@Override
呆若木鸡的意思是什么
public void onCreate(Bundle savedInstanceState)
{…….}
这种写法是正确的,如果你写成:
@Override
public void oncreate(Bundle savedInstanceState)
{…….}
编译器会报如下错误:
The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method
以确保你正确重写onCreate⽅法(因为oncreate应该为onCreate)。
⽽如果你不加@Override,则编译器将不会检测出错误,⽽是会认为你为⼦类定义了⼀个新⽅法:oncreate 加不加@override有什么区别
1.简单来说@override注解是告诉编译器,下⾯的⽅法是重写⽗类的⽅法
2.如果不写@override注解去直接重写⽅法,编译器是不会判断你是不是正确重写了⽗类中的⽅法的。
如重写⽅法时参数与⽗类不同,程序是不会提⽰报错的。这会留下⼀个潜在的bug。
当你写了@override注解时,程序会判断你是否正确的重写了⽗类的对应⽅法。
⽽且加上此注解后,程序会⾃动屏蔽⽗类的⽅法。
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。