继承到底是什么,为什么private static的方法不能被重写
2015-10-13 19:22
393 查看
一个例子, 别人提出来的 。。。。。。
我听说静态方法和private方法不能被覆盖,但是我试了一下以下代码,都能通过:public class A{
static void m(){
...........}
}
class B extends A{
void m(){
...........}
}
或
public class A{
private void m(){
..........}
}
class B extends A{
void m(){
..........}
}
更多0
提问者 根本不懂继承的真正含义
继承看的不是包含什么,而是能用什么。private定义的方法在继承时根本就没有被继承,而是被隐藏了,重写是基于继承过来的方法的(也就是可用的方法),都被隐藏了,说明方法不可用,你重写谁去呀,static方法一样,他是不会被继承的(虽然没被继承,但是子类还包含没被继承的部分,可以通过super调用,static通过类名调用),就跟构造方法不会被继承一样。 向这里写的m方法(B类中)并不是重写了一个m方法,只是写了一个可用的的,m方法,仅此而已,被覆盖的依然被覆盖。
希望对你们有帮助。
我听说静态方法和private方法不能被覆盖,但是我试了一下以下代码,都能通过:public class A{
static void m(){
...........}
}
class B extends A{
void m(){
...........}
}
或
public class A{
private void m(){
..........}
}
class B extends A{
void m(){
..........}
}
更多0
提问者 根本不懂继承的真正含义
继承看的不是包含什么,而是能用什么。private定义的方法在继承时根本就没有被继承,而是被隐藏了,重写是基于继承过来的方法的(也就是可用的方法),都被隐藏了,说明方法不可用,你重写谁去呀,static方法一样,他是不会被继承的(虽然没被继承,但是子类还包含没被继承的部分,可以通过super调用,static通过类名调用),就跟构造方法不会被继承一样。 向这里写的m方法(B类中)并不是重写了一个m方法,只是写了一个可用的的,m方法,仅此而已,被覆盖的依然被覆盖。
希望对你们有帮助。
相关文章推荐
- 从一个字符串中提取一个子字符串
- httpcomponents-client-ga(4.5)
- 创造信用收入 借贷宝颠覆创新普惠金融
- httpcomponents-client-ga(4.5)
- [LeetCode]23. Set Matrix Zeroes矩阵清零
- lintcode:Number of Islands 岛屿的个数
- C++__类模板的派生
- 关于双向反射率BRDF的定义
- USB信息流格式总结
- iOS中 读取相册,调用系统相机 技术分享
- iOS中 读取相册,调用系统相机 技术分享
- 练习:存储学生信息
- 一道题理解Java父子类初始化顺序什么是CopyOnWrite容器
- 大龄屌丝自学笔记--Java零基础到菜鸟--034
- vijosP1289 老板娘的促销方案
- 第四次作业--目标软件:必应词典
- Objective-c开发中混合使用ARC
- 第7周-反向显示一个数
- 解析Python中while true的使用
- poj Balanced Lineup (线段树区间最值+优化)