Java的静态方法不能被重写(详解!)
来源:互联网 发布:淘宝买家订单能导出吗 编辑:程序博客网 时间:2024/05/19 18:43
答案很明确:java的静态方法不能被重写。
静态成员(方法或属性)是类的成员存放在栈中,类可以直接调用(是属于类的静态成员,当然对象也可以调用,只是说你可以使用而已);实例成员是对象的成员,存放在堆中,只能被对象调用。
重写的目的在于根据创造对象的所属类型不同而表现出多态。因为静态方法无需创建对象即可使用。没有对象,重写所需要的“对象所属类型” 这一要素不存在,因此无法被重写。
千言万语,不如代码:
class A{ public static show(){ System.out.println(" Static Method of A"); }}class B extends A{ public static show(){ System.out.println("Static Method of B"); }}
结果,很明显了。如果是重写的话,x.show的结果应该是Static Method of B,从运行结果来看show的结果是和对象的应用及所属类有关。所以说静态成员是属于类的。
那么,怎么描述B中的show和A中的show的关系呢?不是重写,其实也不是重载(验证方法参照上面的代码)
其实他们的关系可以成为:重定义!即重新定义类中的成员。
举个例子:
1子类重新定义从超类获得的属性
class A { public int x=5;}class B extends A{ public boolean x=true;}A a=new B(); B b=new B();
由于B中重新定义了名为x的属性,从A中继承而来的X就被屏蔽了。但依然存在,可以通过super.x来获得其值
2,子类定义的方法与超类的私有方法或者静态方法同名
对超类的私有方法。由于无法派生给子类,因此子类在定义与该类方法同名的方法时不存在任何前提限制。另外,静态方法不能重写但能重定义!
阅读全文
0 0
- Java的静态方法不能被重写(详解!)
- java静态方法的重写,为什么不能?
- java中父类的静态方法不能被重写
- Java中父类的静态方法不能被重写
- java中父类的静态方法不能被重写
- 静态方法只能被继承不能被重写--详解
- Java中为什么静态方法不能被重写?为什么静态方法不能隐藏实例方法?
- java为什么不能重写静态方法
- Java的父类静态方法不能被重写,只能被隐藏
- java中静态(static)的方法为什么不能重写(override)
- java中静态(static)的方法为什么不能重写(override)
- 【Java基础之多态中静态方法重写问题】java中静态方法的重写问题详解
- java静态方法不能多态也不能够重写
- java静态方法不能多态也不能够重写
- JAVA中的static修饰的方法不能被重写
- 子类为什么不能重写父类的静态方法
- 子类为什么不能重写父类的静态方法
- 子类为什么不能重写父类的静态方法
- xuptoj 1298: 找到最大的乘积
- 第一个只出现一次的字符
- Android RelativeLayout(相对布局的一些属性)
- 自己写一个linux的系统调用
- 197.m1-listView显示app的所有条目信息
- Java的静态方法不能被重写(详解!)
- ThinkPHP5学习(10)数据库-查询语言
- ITS_MY_CSDN__MY_F&L
- POJ2914_Minimum Cut_无向图最小割::stoer_wagner算法
- Go Log模块
- Python正则表达式指南
- Leetcode:455. Assign Cookies
- ac自动机 hdu 2896. 病毒侵袭
- Android开发之数据库的拷贝