静态(static)方法不可以重写(override)
2016-01-08 13:26
405 查看
父类的普通方法可以被继承和重写,不多作解释,如果子类继承父类,而且子类没有重写父类的方法,但是子类会有从父类继承过来的方法。
静态的方法可以被继承,但是不能重写。如果父类中有一个静态的方法,子类也有一个与其方法名,参数类型,参数个数都一样的方法,并且也有static关键字修饰,那么该子类的方法会把原来继承过来的父类的方法隐藏,而不是重写。通俗的讲就是父类的方法和子类的方法是两个没有关系的方法,具体调用哪一个方法是看是哪个对象的引用;这种父子类方法也不在存在多态的性质。《Java编程思想》中这样提到“只有普通的方法调用可以是多态的”。下面代码为例:
上面执行的结果是“M”,也就是是M类型的引用调用的,如果修改main方法中的代码:
N n = new N();
n.output();
那么执行的结果是“N”,也就是N类型的引用调用的。
静态的方法不能覆写,也不能被重写。总之,静态的没有重写!!!
本文只为个人学习总结。
静态的方法可以被继承,但是不能重写。如果父类中有一个静态的方法,子类也有一个与其方法名,参数类型,参数个数都一样的方法,并且也有static关键字修饰,那么该子类的方法会把原来继承过来的父类的方法隐藏,而不是重写。通俗的讲就是父类的方法和子类的方法是两个没有关系的方法,具体调用哪一个方法是看是哪个对象的引用;这种父子类方法也不在存在多态的性质。《Java编程思想》中这样提到“只有普通的方法调用可以是多态的”。下面代码为例:
public class StaticTest { public static void main(String[] args) { M m = new N(); m.output(); } } class M { public static void output() { System.out.println("M"); } } class N extends M { public static void output() { System.out.println("N"); } }
上面执行的结果是“M”,也就是是M类型的引用调用的,如果修改main方法中的代码:
N n = new N();
n.output();
那么执行的结果是“N”,也就是N类型的引用调用的。
静态的方法不能覆写,也不能被重写。总之,静态的没有重写!!!
本文只为个人学习总结。
相关文章推荐
- Java语言基础
- SurfaceView 实现 转盘抽奖
- Android NDK开发之 NEON 矩阵转置,矩阵乘法实现
- ExtJS学习--------Ext.Element中的经常使用事件和其它重要的方法学习(实例)
- Javascript addEventListener dispatchEvent
- ubuntu 下网络配置 和 ssh的安装
- android service 总结(2)
- Linux的发展
- oc之NSSortDescriptor(描述器排序)
- UIWebView来加载资源包问题
- Android studio gradle 多渠道打包
- 【Topcoder SRM 641】BitToggler 期望 高斯消元
- 蓝桥杯 历届试题 带分数
- Xcode7免证书真机调试
- Android studio 打包apk如何重命名apk名称
- android无限自动轮播图控件
- 安卓开发中非常炫的效果集合
- MySQL—Install/Remove of the Service Denied
- 排除与多边形边较近的曲线
- 破解 RCA_CRACKME(解除隐藏按钮)