- 1. 多态概述
- 2. 多态前提和体现
- 3. 成员访问特点
- 4. 多态的好处
- 5. 多态的弊端
- 6. 多态中的转型
- 7. 多态成员访问及转型的理解
- 7.1 孔子装爹案例
•某一个事物,在不同时刻表现出来的不同状态。
•举例:
•猫可以是猫的类型。猫 m = new 猫();
•同时猫也是动物的一种,也可以把猫称为动物。
•动物 d = new 猫();
•再举一个例子:水在不同时刻的状态
液态,固态,气态
2. 多态前提和体现•发生在继承关系
•子类重写父类方法
•父类引用指向子类对象
3. 成员访问特点成员变量
Father f = new Son();
- 编译看左边,运行看左边
成员方法
- 编译看左边,运行看右边
静态方法
- 编译看左边,运行看左边
静态方法不能算方法的重写因为静态方法随着类的加载而存在
4. 多态的好处•提高了程序的维护性(由继承保证)
•提高了程序的扩展性(由多态保证)
5. 多态的弊端•不能访问子类特有功能
•那么我们如何才能访问子类的特有功能呢?
6. 多态中的转型向上转型
•从子到父
Father f = new Son();//默认转换
•父类引用指向子类对象
向下转型
•从父到子
Son s = new (Son)f;//强制类型转换
•父类引用转为子类对象
7. 多态成员访问及转型的理解 7.1 孔子装爹案例package com.wsy.polym;
//多态的问题理解:
public class PolymorphicDemo1 {
public static void main(String[] args) {
//向上转型
孔父 k爹 = new 孔子();
System.out.println(k爹.age);//40
k爹.teach();//讲解论语
// k爹.playGame();//这是孔子才能做得
//向下转型
// 孔子 k = (孔子)孔父;//强制转换
// System.out.println(k.age);//20
// k.teach();//讲解论语
// k.playGame();
}
}
class 孔父 {
public int age = 40;
public void teach() {
System.out.println("讲解javase");
}
}
class 孔子 extends 孔父 {
public int age = 20;
public void teach() {
System.out.println("讲解论语");
}
public void playGame() {
System.out.println("英雄联盟");
}
}



