一道Java面试题,静态方法在Java中是一种非虚方法

发表于:2013-6-17 09:12

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:time_hunter    来源:51Testing软件测试网采编

  一道Java面试题,个人认为,静态类型的方法是因为它的外观类型决定的(也就是Parent)。

  静态的方法是非虚方法(Java中的非虚方法有private,final,static,构造器,非虚方法无需根据具体的对象遍历方法区的方法表,决定调用关系)

  也就是说,对于静态类型方法的调用,是其声明类型的,如Parent c = new Child(); Parent便是其外观类型(声明类型),故调用的便是Parent类型的静态方法。

package com.jue.test;

class Parent{
 public static void display(){
  System.out.println("Parent->display");
 }
}

class Child extends Parent{
 public static void display(){
  System.out.println("Child->display");
 }
}
public class MainTest {

 public static void main(String[] args) {
  Parent c = new Child();
  c.display();
 }
}

  result:Parent->display

  为了验证这个,我可以把Parent的 public static void display()方法去掉,则会编译错误。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号