/**
* 多态有三个关键点:
* 1、要有继承
* 2、要有重写
* 3、要有父类引用指向子类对象
* 一种事物有多个状态
*/
现有父类Father,子类Son、Daughter
// 这就是最简单多态
Father f = new Son();
f.smoke();
Father f1 = new Daughter();
f1.smoke();
f1.fight(f);
f、f1都是子类,子类都继承了父类,所以他们可以相互间调用
abstract的实现
1.Animal.java
// 添加abstract表示抽象类
public abstract class Animal {
// 此方法是抽象的,所以需要加上abstract
// 当父类有抽象的方法,子类必须重写,不然子类会报错
public abstract void eat();
public abstract void breathe();
// public void breathe(){
// System.out.println("我在呼吸!");
// }
}
2、Dog.java
public class Dog extends Animal {
// 子类实现抽象方法
@Override
public void eat() {
System.out.println("狗在啃骨头");
}
@Override
public void breathe() {
}
}
3、Cat.java
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫在吃鱼");
}
@Override
public void breathe() {
}
}
4、Test01
public class Test01 {
public static void main(String[] args) {
// 多态
//把Dog修改成Cat,就能换成Cat方法里所有的东西
Animal animal = new Dog();
animal.eat();
animal.breathe();
}
}
输出结果:
狗在啃骨头
interface
如果你的方法全是抽象方法,可改成接口
public interface Animal{
//规定了动物都有呼吸和吃的方法
void eat();
void breathe();
}
如果Animal是接口,Dog就要写成public class Dog implements Animal,Cat亦然