http://developer.51cto.com/art/200906/130414.htm

http://blog.csdn.net/cyzero/article/details/7266831

总结:

多态三要素(三个必须同时满足):继承、方法重写、父类引用指向子类对象

当父类引用指向子类对象时,调用子类的成员方法(前提是这个方法必须在父类中定义过,而且不是父类的private方法)。

方法调用的优先级(由高到低):this.show(O)>super.show(0)>this.show((super)O)>super.show((super)O)

例1:输出B。存在多态。

public class Test{
public static void main(String args[]){
B b=new B();
A a = (A)b;//或A a = b;
a.printValue();//B
}
} class A{
public void printValue(){
System.out.println("A");
}
} class B extends A{
public void printValue(){
System.out.println("B");
}
}

例2:输出A。因为是静态方法,静态方法是编译时确定了的,不存在多态,即不能运行时绑定。

public class Test{
public static void main(String args[]){
B b=new B();
A a =(A)b;//或A a = b;
a.printValue();//A
}
} class A{
public static void printValue(){
System.out.println("A");
}
} class B extends A{
public static void printValue(){
System.out.println("B");
}
}

  因为静态方法在内存中的地址空间是固定的,不存在冲突。也就是说,这两个方法在内存中占用了不同空间,具体执行哪个,要看由哪个类来调用。是A调用,所以只执行A中的静态方法。

【转】深入理解Java多态性的更多相关文章

  1. [转载]深入理解java多态性

    FROM:http://blog.csdn.net/thinkGhoster/article/details/2307001 昨天看到一个关于多态性的帖子,参考了回帖者的理解,加入了一些自己的看法,整 ...

  2. (转)java提高篇(四)-----理解java的三大特性之多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

  3. 深入理解JAVA的多态性[转]

    昨天看到一个关于多态性的帖子,参考了回帖者的理解,加入了一些自己的看法,整理出来供大家参考,不一定完全正确,欢迎大家批评指正. (一)相关类 class A ...{         public S ...

  4. 【java虚拟机系列】从java虚拟机字节码执行引擎的执行过程来彻底理解java的多态性

    我们知道面向对象语言的三大特点之一就是多态性,而java作为一种面向对象的语言,自然也满足多态性,我们也知道java中的多态包括重载与重写,我们也知道在C++中动态多态是通过虚函数来实现的,而虚函数是 ...

  5. Java多态性的理解2

    多态的基础理解请参考:http://www.cnblogs.com/liujinhong/p/6003144.html Java的多态一直是我们理解的一个难点.在读过<深入理解Java虚拟机&g ...

  6. java提高篇(四)-----理解java的三大特性之多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

  7. Java多态性举例说明

    Java多态性的概念也可以被说成“一个接口,多个方法”. (一)相关类 class A ...{ public String show(D obj)...{ return ("A and D ...

  8. 理解Java多态

    多态又称Polymophism,poly意思为多,polymophism即多种形态的意思.一种类型引用因为指向不同的子类,表现出不同的形态,使用不同的方法. 什么是多态 多态建议我们编码时使用comm ...

  9. java提高篇(三)-----理解java的三大特性之多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

随机推荐

  1. springMVC异常处理总结

    a.ExceptionHandlerExceptionResolver 1.@ExceptionHandler --- 统一处理一个controller中(@ExceptionHandler所在con ...

  2. 关于session的一些问题

    最近在做项目的时候碰见了session过期的问题,然后就上网查了一些资料,我将我整理过的知识点梳理一下,顺便说一下我的使用方案. Session存储在服务器端,一般为了防止在服务器的内存中(为了高速存 ...

  3. 【转帖】windows命令行中java和javac、javap使用详解(java编译命令)

    windows命令行中java和javac.javap使用详解(java编译命令) 更新时间:2014年03月23日 11:53:15   作者:    我要评论 http://www.jb51.ne ...

  4. Python中的逻辑运算符

  5. 【C++】A trick I learned:put boilerplate code into constructor of a struct

    I learned this trick from hitonanode's submission on AtCoder. The trick is like struct fast_ios { fa ...

  6. mysql连接数据库时报2003错误怎么解决

    mysql 2003是连接错误,连不上服务器. 你目前可以如下方法:进入控制面板->服务管理(我的是管理工具),->服务,然后找到Mysql服务,右键修改属性,改为自启动,以后再重启就没有 ...

  7. [Next] 四.在next中引入redux

    添加 redux 写过 react 稍微复杂一些应用的话,应该都对 redux(mobx)有一定的了解.这次将 redux 引入到项目中 因为之前写项目的习惯,更喜欢使用 redux-thunk 改写 ...

  8. python+minicap的使用

    说起Minicap,不得不提到STF,STF (Smartphone Test Farm) 是一个开源的web架构应用,用户可通过浏览器远程操作Android设备.调试Android应用.在设备上进行 ...

  9. Linux小知识:sudo su和su的区别

    Linux小知识:sudo su和su的区别 本文是学习笔记,视频地址:https://www.bilibili.com/video/av62836363 su是申请切换root用户,需要申请root ...

  10. 109、Secret的使用场景 (Swarm16)

    参考https://www.cnblogs.com/CloudMan6/p/8082429.html   我们可以用secret管理任何敏感数据.这些敏感数据是容器在运行时需要的.同时我们又不想把这些 ...