Java绑定

java程序绑定:【静态绑定+动态绑定】

(一)首先:要知道java的编译  运行过程:

   ①:java编译过程:java源文件(.java文件)-->字节码文件(.class文件--->JVM可执行代码)【这个过程中java不与内存打交道,编译器解析语法,语法不正确会报错】

   ②:java运行过程:是JVM装载字节码文件--->解释器来解析执行。【这个过程才会创立内存布局,执行java程序

   ③ :java执行字节码的方式有两种:【 .java--->.class--->机器码(不同操作系统JVM转成不同机器码)   这就是java程序一次编译到处运行的原理

           1.0  即时编译方式:解释器-->将字节码--->机器码-->执行机器码.

           2.0  解释执行方式:解释器通过每次解释并执行一小段代码来完成java字节码程序的所有操作。

(二):绑定--->一个方法的调用+方法所在的类(主体)关联起来。

  (三):什么是静态绑定?什么是动态绑定?

   (1)①:静态绑定(前期绑定):在程序执行前,方法已经被绑定。【编译过程中就已经知道这个方法是哪个类】;注意:java当中的方法只有final,static,private构造方法是前期绑定的。

        ②:final,static,private和构造方法是前期绑定的理解.

         1.0  final方法:虽然可以被继承-->可以被子类调用,但是不能被重写(覆盖)--->子类调用该的都是父类写的final方法。

        【好处:①防止方法被覆盖②有效关闭java中的动态绑定】

          2.0  static方法:static方法可以被继承,但是不能被子类重写(覆盖)。但是可以被子类隐藏。(这里意思是说如果父类里有一个static方法,它的子类里如果没有对应的方法,那么当子类对象调用这个方法时就会使用父类中的方法。而如果子类中定义了相同的方法,则会调用子类的中定义的方法。唯一的不同就是,当子类对象上转型为父类对象时,不论子类中有没有定义这个静态方法,该对象都会使用父类中的静态方法。因此这里说静态方法可以被隐藏而不能被覆盖)【静态的随着类的定义被分配装载在内存中】

          3.0  private方法:不能被继承 --->没办法通过子类调用(只能通过本身对象调用)。

          4.0  构造方法不能被继承(编译器编译的时候就知道构造方法属于哪个类

总结:一个方法不能被继承,或者继承后不可以被重写(覆盖),--->那么这个方法就是静态绑定的。

   (2):动态绑定(后期绑定):运行时,根据具体对象的类型进行绑定。【编译器此时不知道对象的类型,方法调用机制自己去调查-->找到方法正确的所属的类】,所以会在对象中安插某些特殊类型的信息。

        过程:

        1.0虚拟机提取对象的实际类型的方法表

         2.0虚拟机搜索方法签名

         3.0调用方法。  

       

posted @ 2018-01-08 16:42  瀧思葉  阅读(238)  评论(0编辑  收藏  举报