Java中static变量能继承吗
更新时间:2019年07月05日 10:01:41 作者:oldmonk
这篇文章主要介绍了Java中static变量能继承,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
今天研究了一下被static修饰的变量和方法,在子类中继承的问题,网上也看了别人的博客,自己也动手试了一下
代码如下
//父类
package com.xujingyang.test;
public class Father {
public static String staticString="父类中的静态变量";
public String str="父类中的非静态变量";
public static void staticMethod(){
System.out.println("父类中的静态方法");
}
public void nostaticMethod() {
System.out.println("父类中的非静态方法");
}
}
//子类
package com.xujingyang.test;
public class Son extends Father {
public static String staticString="子类中的静态变量";
public String str="子类中的非静态变量";
public static void staticMethod(){
System.out.println("子类中的静态方法");
}
public void nostaticMethod() {
System.out.println("子类中的非静态方法");
}
}
//子类
package com.xujingyang.test;
public class A extends Father{
}
//测试方法
package com.xujingyang.test;
public class Test {
public static void main(String[] args) {
Son son=new Son();
System.out.println(son.str);
System.out.println(son.staticString);
son.staticMethod();
son.nostaticMethod();
System.out.println("==============================");
Father f=new Son();
System.out.println(f.str);
System.out.println(f.staticString);
f.staticMethod();
f.nostaticMethod();
System.out.println("==============================");
A f2=new A();
System.out.println(f2.str);
System.out.println(f2.staticString);
f2.staticMethod();
f2.nostaticMethod();
}
}
结果如下:

得出如下结论:父类中的静态成员变量和方法是可以被子类继承的,但是不能被自己重写,无法形成多态.
我发现,变量时无法形成多态的,网上别人说,子类把父类的变量继承过来,内存中会存在两个同名的变量,父类的变量会出现在子类变量之前.如下图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
Spring ApplicationListener源码解析
这篇文章主要为大家介绍了Spring ApplicationListener源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-01-01
浅谈javaSE 面向对象(Object类toString)
下面小编就为大家带来一篇浅谈javaSE 面向对象(Object类toString)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2016-06-06
使用spring框架ResponseEntity实现文件下载
这篇文章主要介绍了使用spring框架ResponseEntity实现文件下载,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-02-02


最新评论