多态
1. 多态
package com.qfedu.a;
class Animal {
}
class Dog extends Animal {
}
class SingleDog extends Animal {
}
class CodingMonkey extends Animal {
}
public class Demo1 {
public static void main(String[] args) {
Animal animal = new Animal();
Dog dog = new Dog();
SingleDog singleDog = new SingleDog();
CodingMonkey codingMonkey = new CodingMonkey();
teachAnimal(animal);
teachAnimal(dog);
teachAnimal(singleDog);
teachAnimal(codingMonkey);
}
public static void teachAnimal(Animal animal) {
System.out.println(animal.getClass() + "来上课了~~~");
}
public static Animal getAnimal() {
return new Animal();
}
}
package com.qfedu.a;
interface USB {
void connect();
}
class Mouse implements USB {
@Override
public void connect() {
System.out.println("鼠标拖来拖去~~~");
}
}
class Logi extends Mouse {
@Override
public void connect() {
System.out.println("Logi MX Master 2s");
}
}
class Keyboard implements USB {
@Override
public void connect() {
System.out.println("键盘噼里啪啦~~~");
}
}
class Filco extends Keyboard {
@Override
public void connect() {
System.out.println("Filco 87 双模黑色 1099 RMB");
}
}
class PC {
public void useUSBInterface(USB usb) {
usb.connect();
}
}
public class Demo2 {
public static void main(String[] args) {
PC pc = new PC();
Mouse mouse = new Mouse();
Keyboard keyboard = new Keyboard();
pc.useUSBInterface(mouse);
pc.useUSBInterface(keyboard);
pc.useUSBInterface(new Logi());
pc.useUSBInterface(new Filco());
}
}
【总结多态作用】
1. 拓宽方法的参数范围
2. 拓宽方法的返回值范围
父类的引用指向子类的对象,或者接口的引用指向遵从接口的类对象,这就是多态!!!