java里面的静态方法

package com.ccut.demo;
/**
* 文件名:SuperClass.java
* 作者:
* 创建日期:2009-7-31上午08:59:46
* 版本:
* 说明:静态方法可以被继承但是不可被覆盖
*/
public class SuperClass {
public static void testMethod() {
  System.out.println("父类的静态方法!");
}
}


package com.ccut.demo;
/**
* 文件名:SubClass.java
* 作者:
* 创建日期:2009-7-31上午09:01:35
* 版本:
* 说明:注释部分是SubClass的一个跟父类里面testMethod同名的静态方法
* 但是这个方法不是重写父类的方法,而是自己定义的一个跟父类同名同参的静态方法
* 静态方法的概念是 静态方法是属于类的,不属于对象。
* 虽然这个方法跟父类的方法同名同参但是这个方法是属于SubClass的
* 而不是SuperClass里面的方法被重写了
*/
public class SubClass extends SuperClass {
// public static void testMethod() {
//  System.out.println("子类的静态方法!");
// }
public static void main(String args[]) {
  SubClass.testMethod();
}
}

SubClass 里面的注释打开的时候运行结果可以解释testMethod()方法是父类继承过来的
当注释被关闭的时候按照继承的机制可以解释这个方法被子类重写了,但是从静态方法的角度去考虑的话这不符合逻辑,这个时候就不存在继承重写的关系了。这个问题很迷惑。网上一帮人都扬言静态方法不可被继承,有的人扬言可以被继承但是不可被重写,我的观点是如果子类里面没有跟父类同名同参的静态方法这时候继承关系确实存在,子类里面可以直接通过类名字调用父类的静态方法,但是如果在子类里面定义一个跟父类同名同参的静态方法的时候继承关系就不存在了,也谈不上被重写了,子类里面的静态方法是子类的,父类里面的静态方法是父类的,但是这时候从继承的角度考虑有很难理解,难道这时候就继承关系的判断条件就改变了?

转载于:https://www.cnblogs.com/bianshencho/archive/2009/09/27/1575064.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值