一、目录
- 多态的介绍
- 方法的多态
- 对象的多态
- 多态的细节
- 动态绑定机制
- 多态数组
- 多态参数
二、多态的介绍
方法或对象具有多种形态。是面向对象的第三大特征,多态是建立在封装和继承的基础之上的。
多态分为方法的多态和对象的多态,其中对象的多态是多态的核心。
三、方法的多态
方法的多态体现在重写和重载上。也就是说,重写和重载都属于多态,它们都是多态的一种表现形式。
package com.javaploy;
public class Functionploy {
public static void main(String[] args) {
B b = new B();
b.sum(1,2,3);
b.sum(1,2);
A a = new A();
a.say();
b.say();
}
}
class A{
public void say(){
System.out.println("Class A is be used");
}
}
class B extends A{
public int sum(int a, int b, int c){
return a + b + c;
}
public int sum(int a, int b){
return a + b;
}
public void say(){
System.out.println("Class B is be used");
}
}
比如上面这段代码中,sum方法和say方法,就都体现了多态。
四、对象的多态
重要的几句话:
- 一个对象的编译类型和运行类型可以不一致。
Animal animal = new Dog(); animal的编译类型是Animal,运行类型是Dog。
- 编译类型在定义对象时,就确定了,不能改变。但是运行类型是可以变化的。
animal = new Cat(); 这时候,animal的编译类型还是Animal,但是运行类型已经变成了Cat。
- 编译类型看定义时,看=号的左边,运行类型看=号的右边。
例:
package com.javaploy.objectploy;
public class Animal {
public void Cry(){
System.out.println("Animal is Crying"