共计 928 个字符,预计需要花费 3 分钟才能阅读完成。
什么是多态
- 允许不同子类型的对象对同一消息作出不同的响应,换句话说就是同一个对象引用调用相同的方法,而该方法实现方式不同,运行得到的结果也就会不同;
编译时多态(也叫前绑定)
方法重载(overload)
/**
* @author plm
* @create 2021/3/1 23:40
*/
class OperatorNumber {
void print(int a, int b) {
System.out.println("int : " + (a + b));
}
void print(long a, long b) {
System.out.println("long : " + (a + b));
}
void print(String a, String b) {
System.out.println("String : " + (a + b));
}
}
class Demo {
public static void main(String[] args) {
OperatorNumber operatorNumber = new OperatorNumber();
operatorNumber.print(1, 4);
operatorNumber.print(2L, 5L);
operatorNumber.print("2", "2");
}
}
/* 输出
int : 5
long : 7
String : 22
*/
运行时多态(也叫后绑定)
方法重写(override)
class Animal {
public void eat() {
System.out.println("动物吃东西");
}
}
class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗啃骨头");
}
}
class AnimalDemo {
public static void main(String[] args) {
//运行时多态
Animal a = new Cat();
a.eat();
a = new Dog();
a.eat();
}
}
/* 输出
猫吃鱼
狗啃骨头
*/
运行时多态的前提
- 要有继承或实现关系
- 要有方法的重写
- 要有父类引用指向子类对象
正文完