java方法调用
来源:互联网 发布:淘宝搜索优化软件 编辑:程序博客网 时间:2024/06/05 17:26
一直想不明白java方法之间的调用关系,看了java虚拟机相关资料后有一点自己的见解,写下来加深下理解。
public class Main {public static void main(String[] args) {Parent parent=new PPSon();parent.myname();}}一级public class Parent {public void myname() {System.out.println("myname_Parent");// TODO Auto-generated method stubprintMyName();}public void printMyName(){System.out.println("Parent");}}二级public class ParentSon extends Parent {@Overridepublic void myname() {System.out.println("myname_ParentSon");super.myname();}@Overridepublic void printMyName() {System.out.println("ParentSon");super.printMyName();}}三级public class PPSon extends ParentSon{@Overridepublic void myname() {System.out.println("myname_PPSon");// TODO Auto-generated method stubsuper.myname();}@Overridepublic void printMyName() {System.out.println("PPSon");// TODO Auto-generated method stub//super.printMyName();}}
java以栈帧的方式存储方法信息,默认为this指针。
方法执行过程中遇到super关键字会向超类进行查找;
详细内容查看《深入理解java虚拟机》19章方法的调用与返回。
大致过程是this->myname()-----ParentSon->myname()-----Parent->myname()。
这时Parent的myname中有一个printMyName(),它之前没有super修饰默认为this,
所以这时PPSon->printMyName()---ParentSon->printMyName()---Parent->printMyName()。
这时方法帧处于Partent.myname()中,方法结束的先后顺序为Parent.myname(),ParentSon.myname(),PPSon.myname()。
0 0
- Java远程方法调用
- Java远程方法调用
- Java远程方法调用
- java反射调用方法
- Java远程方法调用
- Java调用DLL方法
- Java动态调用方法
- xslt调用java方法
- oracle调用java方法
- JAVA调用本地方法
- Java远程方法调用
- Java反射调用方法
- JNI调用Java方法
- Java调用Native方法
- Java动态调用方法
- Java动态调用方法
- Java方法调用
- JNI调用Java方法
- iOS中 视频直播功能-流媒体的使用(详解)
- 【整理】bootstrap基础
- Java 判断操作系统类型(适用于各种操作系统)
- Node.js 调试 GC 以及内存暴涨的分析
- linux c下简单实现服务端与多客户端同时连接
- java方法调用
- 2016/7/20
- poj1330
- centos 6.5 安装和配置 SonarQube
- exynos4412开发板设备注册与驱动注册剖析
- HTML5 浅谈 媒体标签<video><audio>
- 自定义View(一)
- 《Java源码分析》:LinkedHashMap
- oracle12c cdb和pdb参数修改