当前位置: 首页 > news >正文

html5网站制作工具静态网页模板源码

html5网站制作工具,静态网页模板源码,桂林生活网官网二手房,做字体特效的网站JAVA调用对象方法的执行过程#xff1a;①.编译器查看对象的声明类型和方法名。假设调用x.f(parameter), 且隐式参数x声明为C类型的对象#xff0c;有可能在C对象中存在多个参数类型和参数个数不同的f的方法{例如#xff1a;f(int)、f(int,String)和f(String)}#xff0c;…JAVA调用对象方法的执行过程①.编译器查看对象的声明类型和方法名。假设调用x.f(parameter),  且隐式参数x声明为C类型的对象有可能在C对象中存在多个参数类型和参数个数不同的f的方法{例如f(int)、f(int,String)和f(String)}编译器会一一列举C类中的f方法和C的超类中声明为public所有的f方法。至此编译器已经获得所有可能被调用的候选方法。②.接下来编译器将查看调用方法时所提供的参数类型和参数个数。如果所有名为f的方法中存在这样一个与提供方法的参数类型和参数个数完全匹配的方法就选择这个方法这个过程也称重载解析。例如对于调用f(“This is my java”)来说编译器会寻找f(String)这个方法。如果编译器没有找到与参数类型和参数个数匹配的方法或者经过类型转换后有多个方法于此匹配就会报告一个错误。至此已经寻找到需要调用的方法和参数类型③如果是此方法是被private、static、final修饰或则是构造器那么编译器可以准确的知道应该调用哪个方法于是便调用这个的方法。这种调用方式叫着静态绑定。静态绑定方式于此结束。而与此对应是调用方法依赖于隐式参数的实际类型并且在运行时实现动态绑定编译器采用动态绑定的方式会生成一条调用f(String)的指令(其原因请查看下面的动态绑定解析)。④.当程序运行并且采用动态绑定调用方法时虚拟机一定调用与x所引用的对象的实际类型最适合的那个方法。假设x的实际类型是DD是C的子类如果D类定了方法f(String)编译器就直接调用它否则就在D类的超类C中寻找f(String)方法如果C类型中不存在这个方法则又到寻找C的超类中寻找这个方法以此类推。这个过程就称为动态绑定。动态绑定解析每次调用方法时都要进行搜索这样一来时间开销相当大。因此虚拟机预先为每一个类创建了一个方法表其中列举出了类中的所有方法签名和实际调用的方法。而在真正调用方法的时候虚拟机仅仅查找这个表就行了。在前面的列子中虚拟机搜索D类的方法表。以便寻找与调用f(String)相匹配的方法。这个方法既可能是D.f(String),也可能是C.f(String),还有可能是*.f(String)这里的*是指D的超类。----参考于《Core Java》下面我们就举一个简单的例子新建一个Father类,并且让Son类继承Father基类:package com.bin.bind;public class TestBind {public static void main(String[] args) {String name TOM;String hobby ~~~sleep~~~;int age 19;Father father new Son(name, hobby, age);String result father.getAllInfo();System.out.println(result);}}class Father {public Father(String name, int age) {this.name name;this.age age;}public String getName() {return name;}public int getAge() {return age;}public void setName(String name) {this.name name;}public void setAge(int age) {this.age age;}public String getAllInfo() {return 姓名是:this.name\t年龄是:this.age;}private String name null;private int age 0;}class Son extends Father {public Son(String name, String hobby, int age) {super(name, age);setHobby(hobby);}public String getHobby() {return hobby;}public void setHobby(String hobby) {this.hobby hobby;}public String getAllInfo() {return 姓名是:super.getName()\t年龄是:super.getName()\t爱好是:hobby;}private String hobby null;}在Father和Son类中都存在getAllInfo()这个方法因为getAllInfo()不是static、final、private、构造方法所以此方法将采用动态绑定。在程序执行的时候虚拟机会为这个两个类生成方法表Father类Father(String,int)-Father(String,int)setAge(int)-Father.setAge(int)getAge()-Father.getAge()setName(String)-Father.setName(String)getName()-Father.getName()getAllInfo()-Father.getAllInfo()Son类Father(String,int)-Father(String,int)setAge(int)-Father.setAge(int)getAge()-Father.getAge()setName(String)-Father.setName(String)getName()-Father.getName()getAllInfo()-Father.getAllInfo()Son(String,String,age)-Son(String,String,age)setHobby(String)-Son.setHobby(String)getHobby()-Son.getHobby()getAllInfo()-Son.getAllInfo()注意上面列举的方法并不完整因为他们还都默认继承了一个Object超类。下面分析这条语句String result father.getAllInfo();father.getAllInfo()的解析过程如下①虚拟机提取father类的实际类型的方法表。既可能是Father类也可能是Son类。(因为这里father引用所指向的是Son类的实例对象所以实际类型必定是Son)②接下来虚拟机搜索定义getAllInfo签名的类此时虚拟机已经知道调用哪个方法。(Son中只有一个getAllInfo方法且与此匹配所以被调用) ③虚拟机执行调用方法。(最后将返回结果赋值给result)
http://www.sadfv.cn/news/94104/

相关文章:

  • 中学建设校园网站方案小程序开发平台免费
  • 河北省做网站哪家公司好常德网站定制
  • 外贸网站建设网手机版网站建设费用清单
  • 建设大型的企业网站费用摄影网站设计理念
  • 江门建设造价信息网站公司网站建设开发方案
  • 类qq留言网站建设wordpress管理后台 主题
  • 婚纱照网站制作网站页面设计培训
  • 专门做广东11选5的网站淘宝客seo推广教程
  • 网站怎样续费wordpress主机主题
  • 郑州建设网站设计网站建设的税收编码
  • 少部分网站ie打不开这些网站域名ping不通西安烽盈网站建设推广
  • 电子商务网站建设计划东莞十大保安公司
  • 网站转换率哈尔滨建筑工程招聘信息
  • 网站建设方案交换认苏州久远网络广州天河区租房哪里便宜
  • 搭建网站 在线浏览功能网站改版什么意思
  • 推荐成都网站建设中国建设银行官方网站纪念钞预约
  • 肥东建设网站兰州网络公司有哪些
  • google网站搜索深圳十大设计事务所
  • 网站seo外链建设营销案例网站
  • 专业制作网站 地摊做钢材的做什么网站效果好
  • 河源市网站建设公司安康创宇网站建设
  • 什么是网站建设从哪些方面建设网站大连网站网站建设
  • 凡科网做网站视频wordpress 微博时间
  • 在线音乐网站开发教程西安网站建设制作 熊掌号
  • 最新的高端网站建设上海小程序定制开发公司
  • 小公司要不要建设网站怀仁建设局网站
  • 东莞网站排名自己做网站并让别人访问
  • 学生网站建设实训总结九州建网站
  • 北京制作网站多少钱鸽WordPress主题
  • 湛江建站费用电商设计和ui设计哪个前景比较好