重写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) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也就是说 ...
随机推荐
- vue和react的介绍
这几年前端框架发展的不错,出了不少框架,像微软自己的knockoutjs,angular,vue和最近比较火的react等,之前我有写过前两者的相关文章,今天主要说一下后两者. 介绍 是一个用于构建用 ...
- Tapestry3.0开发概论
一.TAPESTRY技术的综述. tapestry是平行于struts/Spring MVC/webwork /jsf等开发工具的语言.tapestry是基于组件的开发工具.它具有组件的可重用性.因为 ...
- VisualStudio移动开发(C#、VB.NET)Smobiler开发平台——BarcodeView控件的使用方式,.Net移动开发
BarcodeView控件 一. 样式一 我们要实现上图中的效果,需要如下的操作: 从工具栏上的“Smobiler Components”拖动一个BarcodeView控件到窗体界面 ...
- 从零开始学安全(三十七)●VM汇编环境搭建
需要下载 vm 虚拟机 破解版连接 链接:https://pan.baidu.com/s/1r9MyPkNBmiYhQ8bdUxPmvQ 提取码:2o98 镜像文件和开发环境 链接:https://p ...
- 使用nssm部署windows服务启动应用
swoole和workerman他们都可以实现即时通信的功能,这里我简单的就workman作为windows服务器启动为例说哈吧.直接进入正题: 下载这个聊天室项目 workerman聊天室 http ...
- Java开发笔记(七十一)容器工具Collections
清单作为一组数据的有序队列,它在组织形式上与数组有着某些异曲同工之处,数组有专门的数组工具Arrays来进行加工操作,照理清单也应该配备对应的清单工具.当然容器这个大家族确实拥有自己的容器工具Coll ...
- MySQL高级特性之分区表
对于用户而言,分区表是一个独立的逻辑表,但是在底层由多个物理子表组成.实现分区的代码实际上是对一组底层表的句柄对象的封装,对分区表的请求都会通过句柄对象转化成对存储引擎的接口调用 意义 MySQL在创 ...
- es6 常用方法
来自 https://www.cnblogs.com/lhl66/p/9555903.html 侵删 来自 https://www.cnblogs.com/lhl66/p/8862106.html 侵 ...
- js知识点总结
组成 ECMAscript 基础语法 变量 数据类型 运算符 数组 函数 对象BOM 浏览器对象模型 window对象(获取浏览器宽高) history对象 locat ...
- windows相关命令记录
1.regedit 打开注册表 2.services.msc 打开服务列表 3.net start/stop 服务名 打开/关闭服务,例:net start mysql57,可以通过服务列表开启/关闭 ...