Java多态分析
来源:互联网 发布:数控冲床编程难不难 编辑:程序博客网 时间:2024/06/17 00:19
多态的唯一目的就是实现所谓的“动态绑定”。
什么叫动态绑定?
除了限制访问,访问方式也决定哪个方法将被子类调用或哪个属性将被子类访问. 函数调用与函数本身的关联,以及成员访问与变量内存地址间的关系,称为绑定。若在程序执行前进行绑定(例如编译期)的话,叫做前期绑定,或静态绑定,但是它不能利用任何运行期的信息(c语言c++语言都是前期绑定)。相应的,在运行时候根据对象的类型进行绑定叫后期绑定,也叫动态绑定。也就是说,如果一个语言想实现后期绑定,就必须具有某种机制,以便能够在运行时能判断对象的类型,从而调用恰当的方法。动态绑定的好处是允许继承类来改变父类的行为,同时可以保持父类的接口和功能。
在java中,除了static方法和final方法(private方法属于final方法)之外,其他的都默认进行后期绑定(就是可以多态)。如果将一个方法声明为final或者static或者private,就告诉编译器不需要对该方法动态绑定。这样,编译器就可以可以为final方法调用生成更有效的代码()。
类的一个成员若想表现多态必须可以被覆盖:
对于成员变量而言,不会发生覆盖现象(会隐藏),在子类出现相同变量的定义时只会隐藏父类变量,因此不会表现多态。同时变量调用在编译时就会解析,不符合动态绑定的特征;
在成员方法中,静态方法和final方法(private方法)也不会发生覆盖现象(会隐藏),因此也不会表现多态性。只有除静态方法和final方法以外的方法才会表现多态性。
例子:
class Base{ public int a=2; public void method(){ System.out.println("base:method"); } int getA(){ return a; } } class Sub extends Base{ public int a=3; public void fmethod(){ System.out.println("sub:method"); } //子类方法可视范围可以扩大 public int getA(){ return a; } } public class Test { public static void main (String args []) { Base b=new Sub(); //方法多态,输出sub:fmethod b.fmethod(); //属性不能多态,输出为2. System.out.println(b.a); //但是可以通过方法来实现属性的多态,输出3 System.out.println(b.getA()); } }
- Java多态分析
- java多态分析
- java多态机制分析
- Java多态案例分析
- java多态示例程序与分析
- JAVA多态与类型转化分析
- java中的多态及其内存分析
- java多态中的一些问题分析
- Java中的多态用法实例分析
- java——多态分析
- Java内存消耗多分析
- Java的多态与类型转化分析
- java中重写、重载、多态几个概念区别分析
- JAVA多态与类型转化分析-------》域没有多态性
- java多态的实现的深入分析
- java分析
- Java的多进程运行模式分析
- Java的多进程运行模式分析
- 励志语句,简短有道理
- Hdu1829 并查集+广度优先搜索
- 设置网卡混杂模式
- C++引用类型
- i++与++i的区别
- Java多态分析
- 数据结构面试之九——图的常见操作3之最小生成树
- 二叉树 和 游戏
- 从头开始构建一个web即时通讯系统 - 基础 - web即时通讯系统的四种实现
- 我的java笔记(网络编程)
- TextView 设置 Ellipsize 属性,但它不工作?
- HTML入门
- css定位与定位应用详解
- Point,Size,Rectangle结构