ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

Java继承类中static成员函数的重写

来源:网络整理     时间:2015-07-24     关键词:

本篇文章主要介绍了"Java继承类中static成员函数的重写",主要涉及到方面的内容,对于Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: 在java中,static成员函数是否可以被重写呢?结论是,你可以在子类中重写一个static函数,但是这个函数并不能像正常的非static函数那样运行。也就是...

在java中,static成员函数是否可以被重写呢?

结论是,你可以在子类中重写一个static函数,但是这个函数并不能像正常的非static函数那样运行。

也就是说,虽然你可以定义一个重写函数,但是该函数没有多态特性。让我们测试一下:

 1class  testClass1{
 2staticvoid SMothod(){
 3         System.out.println("static in testClass1");
 4    }
 5}
 6class testClass2 extends testClass1{
 7staticvoid SMothod(){
 8         System.out.println("static in testClass2");
 9    }
10}
11publicclass MainClass{
12publicstaticvoid main(String... args){
13         testClass1 tc1=new testClass2();
14         testClass2 tc2 =new testClass2();
15         tc1.SMothod(); //输出结果为 static in testClass116         tc2.SMothod(); //输出结果为 static in testClass217    }
18 }

从结果中可以看到,当我们用父类的实例引用(实际上该实例是一个子类)调用static函数时,调用的是父类的static函数。

原因在于方法被加载的顺序。

当一个方法被调用时,JVM首先检查其是不是类方法。如果是,则直接从调用该方法引用变量所属类中找到该方法并执行,而不再确定它是否被重写(覆盖)。如果不是,才会去进行其它操作(例如动态方法查询),具体请参考:方法的加载

以上就介绍了Java继承类中static成员函数的重写,包括了方面的内容,希望对Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播有兴趣的朋友有所帮助。

本文网址链接:http://www.codes51.com/article/detail_153166.html

相关图片

相关文章