多态
【多态基本介绍】
方法或对象具有多种形态。是面向对象的第三大特征,多态是建立在封装和继承之上的
方法的多态
重写和重载就体现了多态
package Poly;
public class MethodPloy {
public static void main(String[] args) {
// 方法重载体现多态
A a = new A();
// 输入不同参数,就会调用不同的sum方法,就体现了多态
System.out.println(a.sum(1,2));
System.out.println(a.sum(1,2,3));
// 方法重写体现多态
B b = new B();
a.say(); // A say()方法 被调用
b.say(); // B say()方法 被调用
}
}
class B { // 父类
public void say(){
System.out.println("B say()方法 被调用");
}
}
class A extends B { //子类
public int sum(int n1, int n2){
return n1 + n2;
}
public int sum(int n1, int n2,int n3){
return n1 + n2 + n3;
}
@Override
public void say() {
System.out.println("A say()方法 被调用");
}
}
对象的多态
对象的多态(核心)
一个对象的编译类型和运行类型可以不一致
编译类型在定义对象时,就确定了,不能改变
运行类型是可以改变的
编译类型看定义时 = 号 的左边,运行类型看 = 号 的右边
例如:Animal animal = new Dog();【animal 的编译类型是Animal,运行类型是Dog】
animal = new Cat();【animal 的运行类型变为了Cat,编译类型还是是Animal】