java绑定_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调用方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值