java静态方法的重写,为什么不能?
2015-06-01 21:52
274 查看
JAVA静态方法形式上可以重写,但从本质上来说不是JAVA的重写。因为静态方法只与类相关,不与具体实现相关,声明的是什么类,则引用相应类的静态方法(本来静态无需声明,可以直接引用),看下例子:
Java代码
class Base{
static void a( ){System.out.println("A"); }
void b( ){System.out.println("B"); }
}
public class Inherit extends Base{
static void a( ){System.out.println("C"); }
void b( ){System.out.println("D"); }
public static void main(String args[]){
Base b=new Base();
Base c=new Inherit();
b.a();
b.b();
c.a();
c.b();
}
}
以上输出的结果是:A
B
A
D
非静态方法 按重写规则调用相应的类实现方法,而静态方法只与类相关。
Java代码
class Base{
static void a( ){System.out.println("A"); }
void b( ){System.out.println("B"); }
}
public class Inherit extends Base{
static void a( ){System.out.println("C"); }
void b( ){System.out.println("D"); }
public static void main(String args[]){
Base b=new Base();
Base c=new Inherit();
b.a();
b.b();
c.a();
c.b();
}
}
以上输出的结果是:A
B
A
D
非静态方法 按重写规则调用相应的类实现方法,而静态方法只与类相关。
相关文章推荐
- Eclipse汉化
- Spring使用教程(二)配置factorybean
- Java设计模式——Singleton(单例)模式
- struts2中拦截器与过滤器的区别
- Mybatis使用之SpringMVC整合
- [Java5新特性] 动态代理
- 拦截器和过滤器有什么区别(JAVA/struts2.0)
- [Java5新特性] 动态代理
- 我是菜鸟:Java学习中遇到的新知识汇总
- 总结-java
- [Java报错]常见报错汇总
- 成为JavaGC专家(1)—深入浅出Java垃圾回收机制
- 详细介绍Java垃圾回收机制
- [Java5新特性]Annotation注解
- [Java5新特性]Annotation注解
- 算法学习(java实现之字符串)~~~~字符串查找
- Java垃圾回收机制
- 应用Spring MVC发布restful服务是怎样的一种体验
- java 基础学习-05 io流学习案例
- Java中正则表达式的使用