一道Java面试题,静态方法在Java中是一种非虚方法 http://blog.csdn.net/time_hunter/article/details/9074107
2016-02-26 19:07
696 查看
2013-06-11 10:01 1311人阅读 评论(1) 收藏 举报
分类:
java细节(6)
版权声明:本文为博主原创文章,未经博主允许不得转载。
一道Java面试题,个人认为,静态类型的方法是因为它的外观类型决定的(也就是Parent)。
静态的方法是非虚方法(Java中的非虚方法有private,final,static,构造器,非虚方法无需根据具体的对象遍历方法区的方法表,决定调用关系)
也就是说,对于静态类型方法的调用,是其声明类型的,如Parent c = new Child(); Parent便是其外观类型(声明类型),故调用的便是Parent类型的静态方法。
[java] view
plain copy
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()方法去掉,则会编译错误。
分类:
java细节(6)
版权声明:本文为博主原创文章,未经博主允许不得转载。
一道Java面试题,个人认为,静态类型的方法是因为它的外观类型决定的(也就是Parent)。
静态的方法是非虚方法(Java中的非虚方法有private,final,static,构造器,非虚方法无需根据具体的对象遍历方法区的方法表,决定调用关系)
也就是说,对于静态类型方法的调用,是其声明类型的,如Parent c = new Child(); Parent便是其外观类型(声明类型),故调用的便是Parent类型的静态方法。
[java] view
plain copy
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()方法去掉,则会编译错误。
相关文章推荐
- Android通过HTTP POST带參訪问asp.net网页
- 08_android入门_android-async-http开源项目介绍及用法
- Linux下网络性能测试Netperf工具介绍及安装
- Linux内核TCP/IP参数分析与调优
- Linux内核TCP/IP参数分析与调优
- TCP连接的状态详解以及故障排查
- http协议详解
- IOS网络——检测网络状态:Reachability,iosreachability
- TCP和UDP的区别
- 深入理解HTTP协议
- TCP的状态和三次握手
- TCP协议中的三次握手和四次挥手(图解)
- TCP状态转换详解
- TCP的几个重要参数介绍
- 网络相关知识
- 使用angularjs的$http.post异步提交数据时,服务器接收不了的问题
- HttpURLConnection post json传参
- C++实现HTTP上传
- OkHttp3源码分析
- 6.3 强大的网络请求第三方框架 Retrofit 的介绍和使用<未完待翻译>