java 父类引用指向子类对象---动态绑定之易错点详解
来源:互联网 发布:java编程思想4 pdf 编辑:程序博客网 时间:2024/06/07 12:56
知识点:
1、java 中父类引用指向子类对象时动态绑定针对的只是子类重写的成员方法;
2、父类引用指向子类对象时,子类如果重写了父类的可重写方法(非private、非 final 方法),那么这个对象调用该方法时默认调用的时子类重写的方法,而不是父类的方法;
3、对于java当中的方法而言,除了final,static,private 修饰的方法和构造方法是前期绑定外,其他的方法全部为动态绑定;(编译看左边,运行看右边)
本质:java当中的向上转型或者说多态是借助于动态绑定实现的,所以理解了动态绑定,也就搞定了向上转型和多态。
实例演示:
package practice_19;public class AlibabaMain01 {public static void main(String[] args) {System.out.println("--------父类引用指向子类对象-----------");Father instance = new Son();instance.printValue();instance.printValue2();System.out.println(instance.name);instance.printValue3();System.out.println("----------创建子类对象------------");Son son = new Son();son.printValue();son.printValue2();System.out.println(son.name);son.printValue3();System.out.println("---------创建父类对象-----------");Father father = new Father();father.printValue();father.printValue2();System.out.println(father.name);father.printValue3();}}class Father {public String name = "father";public void printValue() {System.out.println("this is father's printValue() method.---"+this.name);}public void printValue2(){System.out.println("this is father's printValue2() method.---"+this.name);}public static void printValue3(){System.out.println("this is father's static printValue3() method.");}}class Son extends Father {public String name = "Son";public void printValue() {System.out.println("this is Son's printValue() method.---"+this.name);}public static void printValue3(){System.out.println("this is Son's static printValue3() method.");}}
运行结果:
--------父类引用指向子类对象-----------this is Son's printValue() method.---Sonthis is father's printValue2() method.---fatherfatherthis is father's static printValue3() method.----------创建子类对象------------this is Son's printValue() method.---Sonthis is father's printValue2() method.---fatherSonthis is Son's static printValue3() method.---------创建父类对象-----------this is father's printValue() method.---fatherthis is father's printValue2() method.---fatherfatherthis is father's static printValue3() method.
分析:
1、父类引用指向子类对象,对象调用的方法如果已经被子类重写过了则调用的是子类中重写的方法,而不是父类中的方法;
2、父类引用指向子类对象,如果想要调用子类中和父类同名的成员变量,则必须通过getter方法或者setter方法;
3、父类引用指向子类对象,如果想调用子类中和父类同名的静态方法,直接子类“类名点” 操作获取,不要通过对象获取;
4、父类引用指向子类对象的两种写法:(第二种得了解,面试中可能用到)
// 1、第一种常规写法Father instance = new Son();// 2、第二种变形写法;Son son = new Son();Father mson = (Father) son;
0 0
- java 父类引用指向子类对象---动态绑定之易错点详解
- Java父类引用指向子类对象静态绑定和动态绑定问题
- Java 父类引用指向子类对象
- java父类引用指向子类对象
- java父类引用指向子类对象
- java 父类引用指向子类对象
- java父类引用指向子类对象
- Java父类对象引用指向子类对象
- Java 中深层理解父类引用指向子类对象
- java多态,如何理解父类引用指向子类对象
- Java 中深层理解父类引用指向子类对象
- Java多态--父类引用指向子类对象
- java中protected 继承 父类引用指向子类对象
- JAVA中的父类引用指向子类对象
- Java多态性 父类引用指向子类对象
- java多态性,父类引用指向子类对象
- Java 中深层理解父类引用指向子类对象
- java多态,如何理解父类引用指向子类对象
- 十、类加载过程
- Lua实现游戏震屏效果
- mapduce中自定义分组
- 异常解决 java.io.FileNotFoundException: class path resource [spring/springmvc.xml]
- 第三十二讲项目1-输出星号(1)
- java 父类引用指向子类对象---动态绑定之易错点详解
- 为程序界面添加滑动条
- ScrollView嵌套WebView冲突解决方法
- vs2013如何快速批量注释
- 安装好 .NET 4 后还是找不到设定网站站台的 ASP.NET 页签的 ASP.NET 4.0 的选项
- 单例模式汇总篇续
- Jmeter:正则表达式提取器上一个http请求报文内容作为下一个请求的参数
- Ural1521-War Games 2
- 图像的卷积 以及opencv基本操作