【Java 多态】多态中 静态方法的特点

来源:互联网 发布:最大的淘宝客网站 编辑:程序博客网 时间:2024/04/30 11:42

在多态中

对于普通方法:

编译时看左边,运行时看右边。

对于静态方法:

编译、运行都看左边

对于成员变量:

编译、运行看左边


对于静态方法:

编译、运行都看左边

为什么对于静态方法 ,无论是编译还是运行 ,都是根据基类呢?


Person  p = new Student()

Person p:引用

new  Student():新实体

解答:

Java中除了static和final方法外,所有方法都是使用动态绑定的。

在多态中,upcast(向上转型)可以简化程序的设计,提高程序的扩展性。

Java的引用变量有两个类型,一个是编译时类型,一个是运行时类型,编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,会出现所谓的多态。

多态是的发生时基于对象的。也就是说,只有在“new”出新的实体时,才有多态这一说。多态中的public、protected方法可以被导出类覆写,

我们使用这些可以覆写的方法时,如果只是声明了引用,编译器是没有办法确定到底是使用的哪个方法的,因此,我们使用动态绑定的方式,在调用方法之前,

指定我们要调用的是哪个类的方法。Person  p = new Student()

然而什么是静态绑定?

静态绑定(前期绑定)是指程序在执行前进行绑定,由编译器和连接程序实现。

在程序执行前,我们指明了类的引用Person p 。

也就是说,static使用的是静态绑定,而静态绑定的过程中,我们加载了类的引用,而static是随着类的出现而出现的。而且static方法只有一份。static方法“绑定”在了类上

所以说,对于静态方法  无论是编译和运行都看左边。


/**程序在执行前的编译过程中我们进行了什么步骤呢?

词法分析、语法分析、中间代码生成、代码优化和目标代码生成*/



0 0