public abstract class Animal {
public abstract void run() ;
public String name = "父类动物";
}
public class Dog extends Animal{
public String name = "子类动物";
@Override
public void run() {
System.out.println("跑的快");
}
}
public class Test {
public static void main(String[] args) {
Animal a = new Dog();
a.run(); // 编译看左边,运行看右边
System.out.println(a.name); //编译看左,运行也看左
/**
结果:
跑的快
父类动物
*/
}
}
多态的优势
多态下引用数据类型的类型转换
//自动类型转换
Animal a1 = new Dog();
a1.run();
//强制类型转换
Animal a2 = new Dog();
if (a2 instanceof Dog) {
Dog d = (Dog) a2;
d.lookDoor();
}
多态的案例
public interface USB {
void input();
void output();
}
public class Moues implements USB{
private String name;
public Moues() {
}
public Moues(String name) {
this.name = name;
}
@Override
public void input() {
System.out.println(name + "鼠标已插入");
}
@Override
public void output() {
System.out.println(name + "鼠标已拔出");
}
public void check() {
System.out.println(name + "鼠标被点击");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Keyboard implements USB{
private String name;
public Keyboard() {
}
public Keyboard(String name) {
this.name = name;
}
@Override
public void input() {
System.out.println(name + "键盘已插入");
}
@Override
public void output() {
System.out.println(name + "键盘已拔出");
}
public void keyDown() {
System.out.println(name + "键盘点击");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Computer {
private String name;
public Computer() {
}
public Computer(String name) {
this.name = name;
}
public void start() {
System.out.println("当前电脑为:" + name);
}
public void installUSB(USB usb) {
// 多态 包括 鼠标和键盘
usb.input();
if (usb instanceof Keyboard) {
Keyboard k = (Keyboard) usb;
k.keyDown();
} else if (usb instanceof Moues) {
Moues m = (Moues) usb;
m.check();
}
usb.output();
}
public String getName() {
return name;
}
public void setName(Stri
面向对象三大特征之三:多态多态的概述,多态的形式public abstract class Animal { public abstract void run() ; public String name = "父类动物";}public class Dog extends Animal{ public String name = "子类动物"; @Override public void run() { System.out.