写在前面
在学习java基础时发现多态机制有点难理解。所以写一篇文章来记录对多态机制的理解,希望看到这篇文章的大佬们发现有问题的地方可以提提意见谢谢~~~~~
向上转型
概念
把对某个象的引用视为对其基类型的引用的做法被称为向上转型。(Thinking in Java )
个人见解
有一个子类Son继承自父类Father.子类Son 的一个对象的引用指向父类Father的一个对象的引用father。
father = son(这就是一个向上转型)详细代码如下:
/**
* @author lichen
* 多态实例
*/
//: ~polymorphic/com.rootchen.poly/PolyTest.java
package com.rootchen.poly;
class Father{
public void show() {
System.out.println("父类中的show方法");
}
}
class Son extends Father{
//重写父类show方法
public void show() {
System.out.println("子类中的show方法");
}
}
public class PolyTest {
public static void main(String[] args) {
//向上转型
/*Father father = new Father();
Son son = new Son();
father = son; //子类对象的引用赋值给父类对象的引用
father.show();*/
Father son = new Son(); //子类对象赋值父类对象的引用
son.show();
}
} /* output:
子类中的show方法
*///:~
1、之所以子类对象或者子类对象的引用可以赋值给父类对象,是因为通过继承其实子类Son就是父类Father的一种,类似于方形圆形都是几何图形一样。
2、之所以输出的结果是子类中的show方法是因为后期绑定(多态) 正确的调用了子类中的show方法。虽然看着是父类的引用调用的show方法,实质父类引用指向的对象类型是子类对象,所以调用的是子类的show方法。
方法的调用绑定
概念
将一个方法调用同一个方法主体关联起来被称为绑定。若在程序执行前进行绑定叫做前期绑定,C的调用方法就是前期绑定。
在运行时根据对象类型进行绑定叫做后期绑定。(Thinking in Java)
网友评论