静态方法不能覆盖

简介:
1. 静态方法只与定义时所在的类相关,在编译期就已经绑定到某个类。可以继承,但不能在子类中被同名方法覆盖.
网上有一句话:类的引用指向子类时,当用到方法时,调用的是子类的对象.当用到属性时,用到的是父类对象.这个不适合静态方法.
代码测试如下:

public  class Test1 { 
final  int var_final = 100; 

void doit(){ 
     System.out.println(var_final); 

    
static  int myFunction(){ 
     return 500; 



public     class Test2  extends Test1{ 
final  int var_final = 200; 
public Test2(){ 
         super(); 
    } 
void doit(){ 
        System.out.println(var_final); 


static  int myFunction(){ 
     return 1000; 

    
public  static  void main(String[] str){ 
    Test1 test =  new Test2(); 
    System.out.println( "var_final = "+test.var_final); 
    System.out.println( "myFunction = "+test.myFunction()); 

}
因为不管是静态方法,还是静态成员,他只属于这个类。类对像(Class)没有像实例一样的包容形式。只能各自调用各自的静态成员与方法。
 
 
本文转自 anranran 51CTO博客,原文链接:http://blog.51cto.com/guojuanjun/274109

相关文章
|
2月前
|
Java
Java方法继承、方法重载、方法覆盖总结
总之,继承实现类的层次结构,方法重载提供方法的多样性,方法覆盖实现多态性。这些概念是面向对象编程的核心,用于实现代码的结构、灵活性和可维护性。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
14 0
|
2月前
|
C++
C++ 类中静态成员和静态成员函数的继承覆盖
C++ 类中静态成员和静态成员函数的继承覆盖
36 0
|
11月前
方法的重载和方法覆盖的区别
方法的重载和方法覆盖的区别
44 0
20、利用class创建对象,防止数据覆盖
20、利用class创建对象,防止数据覆盖
43 0
|
Python
一日一技:如何禁止 Python 子类覆盖父类方法?
一日一技:如何禁止 Python 子类覆盖父类方法?
297 0
一日一技:如何禁止 Python 子类覆盖父类方法?
|
Java
Java - 反射使用(调用私有方法、修改私有属性、获取父类私有字段)
Java - 反射使用(调用私有方法、修改私有属性、获取父类私有字段)
750 0
【错误记录】反射时调用方法及成员报错 ( 执行反射方法 | 设置反射的成员变量 | 设置方法/成员可见性 )
【错误记录】反射时调用方法及成员报错 ( 执行反射方法 | 设置反射的成员变量 | 设置方法/成员可见性 )
163 0
|
Kotlin
【Kotlin】Kotlin 类的继承 二 ( 属性覆盖 | 属性覆盖的四种情况 | 常量 / 变量 属性覆盖 | 子类初始化与属性覆盖 )
【Kotlin】Kotlin 类的继承 二 ( 属性覆盖 | 属性覆盖的四种情况 | 常量 / 变量 属性覆盖 | 子类初始化与属性覆盖 )
307 0
|
Java Spring
关于公共类中常见的静态方法需要调用spring注入的非静态变量的解决方案
当你编写一个需要调用mybatis的dao层的类时,会先通过spring依赖注入该变量,但是由于你需要用到该变量在静态方法中,所以无法使用,此时你将该变量改为静态变量,发现无法注入了 解决方案: 需要一个私有静态类变量 DateUtils   @PostConstruct  会在spring依...
3876 0
类中静态方法的调用,根据传入值生成不同类但同一个接口对象,调用其中实现的接口的方法.
实现同一个接口的不同的类,根据调用总和类中静态类型(返回值同接口)方法,(传入不同值),根据if else判定该new哪一个实现类.从而使用不同的接口的实现方法.  将编程看作是一门艺术,而不单单是个技术。
1094 0