重写override
不可重写私有方法。
不可重写非静态的方法,虽然编译器不会报错,但是得不到预期的结果。
可以通过重写的形式对父类的功能进行重新定义,比如:对功能进行修改或者进行升级时。
public void showMsg(){
System.out.println("BaseAction.showMsg");
}
public void getName(){
System.out.println("BaseAction.getName:张三");
}
}
class Main{
public static void main(String[] args){
BaseAction b = new BaseAction();
b.showMsg();
b.getName();
}
}
运行结果:
BaseAction.showMsg
BaseAction.getName:张三
现在在Main类中调用BaseActiond的showMsg方法需要改造,但是showMsg方法在其余的地方也用到了,不可直接改变showMsg中的代码,这个时候就需要用重写。
public void showMsg(){
System.out.println("BaseAction.showMsg");
}
public void getName(){
System.out.println("BaseAction.getName:张三");
}
}
class UserAction extends BaseAction{
public void showMsg(){
System.out.println("UserAction.showMsg");
}
}
class Main{
public static void main(String[] args){
//BaseAction b = new BaseAction();
UserAction b = new UserAction();
b.showMsg();
b.getName();
}
}
运行结果:
UserAction.showMsg
BaseAction.getName:张三
重写后的代码,在Main类中并不影响getName,只对showMsg方法做了改变。
@Override的用法
@Override是伪代码,写和不写都可以,不过写上还是有很多好处的,可以很清楚的看出这个是重写方法,而且编译器也会验证该方法在父类中是否存在。当你想重写一个方法时,但是没有写上@Override,如果方法名称或者参数写错了,编译器也不会报错,会认为这是子类中定义的一个方法或是在重载一个方法。
public void findAll(String name){
System.out.println("BaseAction.findAll");
}
} class UserAction extends BaseAction{ @Override
public void findAll(String name){
System.out.println("UserAction.findAll");
}
}
public void findAll(String name){
System.out.println("BaseAction.findAll");
}
} class UserAction extends BaseAction{ public void findAll(int name){
System.out.println("UserAction.findAll");
}
} class Main{ public static void main(String[] args){
UserAction u = new UserAction();
u.findAll("1");
u.findAll(1);
}
}
运行结果:
BaseAction.findAll
UserAction.findAll
如果在UserAction中的findAll()方法上不加上@Override,编译器也不会报错,但是变成了方法重载。如果在UserAction中的findAll()方法上加上@Override,编译器就会提示错误。
重写override的更多相关文章
- C#中隐藏(new)、方法重写(override)、重载(overload)的区别
转自:http://www.cnblogs.com/glife/archive/2009/12/28/1633947.html 重载.重写和隐藏的定义: 重载:public string ToStri ...
- 重写(Override)与重载(Overload)
重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也就是说子类 ...
- Java 重写(Override)与重载(Overload)
1.重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变.即外壳不变,核心重写! 参数列表和返回值类型必须与被重写方法相同. 访问权限必须低于父类中 ...
- 重载(overload),覆盖/重写(override),隐藏(hide)
写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖/重写(override),隐藏(hide).在早期的C++书籍中,常常把重载(overload)和覆盖(override)搞错 ...
- Java 读书笔记 (十七) Java 重写(Override)与重载(Overload)
重写(Override) 重写是子类对父类的允许访问的方法的实现过程重新编写,返回值和形参都不能改变,即外壳不变,核心重写. // 如果重写不是相当于重新定义了一个方法?那为什么不直接写,还要exte ...
- java学习笔记(十一):重写(Override)与重载(Overload)
重写(Override) 重写是子类对父类的允许访问的方法的进行重新编写, 但是返回值和形参都不能改变. 实例 class Animal{ public void run(){ System.out. ...
- 重写Override ToString()方法
使用一个小例子来演示: 创建一个普通类别: class Ax { private int _ID; public int ID { get { return _ID; } set { _ID = va ...
- Java - 21 Java 重写(Override)与重载(Overload)
Java 重写(Override)与重载(Overload) 重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变.即外壳不变,核心重写! 重写的好 ...
- 重写(Override) 重载(Overload)
重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重载(Overload)- 参数必须不同 重载(overloadin ...
- Java面向对象---重写(Override)与重载(Overload)
一.重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也就是说 ...
随机推荐
- Unix程序员的Win10二三事
macOS延续自BSD Unix, Linux则是从内核开始重新编写但延续Unix使用方式的Unix.所以mac还有linux程序员,一般都算是*nix程序员,尽管其中还有不少的区别. Windows ...
- Android Studio升级到3.1.4后打开旧项目警告:The `android.dexOptions.incremental` property is deprecated and it has no effect on the build process.
现象截图 问题原因&解决方案 在build.gralde中,对Android开发过程中突破的方法数的限制,做了如下解决配置: dexOptions { incremental true jav ...
- PE知识复习之PE的节表
PE知识复习之PE的节表 一丶节表信息,PE两种状态.以及重要两个成员解析. 确定节表位置: DOS + NT头下面就是节表. 确定节表数量: 节表数量在文件头中存放着.可以准确知道节表有多少个. 节 ...
- SQL 中的一些小巧但常用的关键字
前面的几篇文章中,我们大体上介绍了 SQL 中基本的创建.查询语句,甚至也学习了相对复杂的连接查询和子查询,这些基本功相信你也一定掌握的不错,那么本篇则着重介绍几个技巧方面的关键字,能够让你更快更有效 ...
- mysql 的优化
=>记录慢速查询 在一个 SQL 服务器中,数据表都是保存在磁盘上的.索引为服务器提供了一种在表中查找特定数据行的方法,而不用搜索整个表.当必须要搜索整个表时,就称为表扫描.通常 来说,您可能只 ...
- JavaScript_02_JavaScript对象
ECMAScript标准中基本对象:Array,Boolean,Date,Math,Number,String,RegExp,Global Boolean,Date,Math,Number,Strin ...
- Java开发笔记(七十一)容器工具Collections
清单作为一组数据的有序队列,它在组织形式上与数组有着某些异曲同工之处,数组有专门的数组工具Arrays来进行加工操作,照理清单也应该配备对应的清单工具.当然容器这个大家族确实拥有自己的容器工具Coll ...
- 【eclipse】eclipse报错:the resource is not on the build path of a java project
最近在eclipse中,使用svn导入svn上的一个maven项目,但是导入后类的包并没有以源码包的方式显示,而是以普通文件包的方式显示出来,在对类进行F3等操作时就报错:“the resource ...
- Linux命令行对文件某(些)行的提取
[一]从第3000行开始,显示1000行.即显示3000~3999行 cat filename | tail -n +3000 | head -n 1000 [二]显示1000行到3000行 cat ...
- excel函数2
1截取函数的应用 实例: 2.日期的年周月星期数据处理