JAVA—OOP之多态
水,汽,冰就是一个物体在不同条件下的不同种状态
1、什么是多态?
A:生活中的多态
就好比在学校没老师上自习课一样,此时每种人都有不同的状态,有的认真做作业,有的玩手机,有的讲小话,有的睡觉。当听到老师来了的这个消息的时候,每个人都会有不同的反应,有的无所谓,有的吓尿了,有的吓屎了等等等。
B:程序中的多态
同一个引用类型,使用不同的实例而执行不同操作。JAVA通过方法”重载”和方法”重写”来实现多态的。
2、多态的简单实例
A:定义一个动物接口,和一个吃东西的方法
public interface Ianimal {
void eat();
}
B:定义一个动物抽象类,实现动物接口
public abstract class Animal implements Ianimal{
}
C:定义一个猫类,继承动物抽象类,并重写吃东西的方法
public class Cat extends Animal {
//方法重写的体现
@Override
public void eat() {
System.out.println("我是猫,我吃鱼...");
}
}
D:定义一个狗了,继承动物抽象类,并重写吃东西的方法
public class Dog extends Animal {
//方法重写的体现
@Override
public void eat() {
System.out.println("我是狗,我吃骨头...");
}
}
E:测试类
public class Test {
public static void main(String[] args) {
//向上转型:父类的引用指向子类的实例
Ianimal cat = new Cat();
Test.display(cat);
Ianimal dog = new Dog();
Test.display(dog);
}
//方法重载的体现
public static void display(Ianimal animal){
animal.eat();
}
}
F:测试结果
3、多态的好处
从上面的例子就能看出:如果不采用多态要实现同样的结果的,在调用display()方法的时候就必须要给不一样的参数,而且每次也要改变方法里面的对象去调用方法,这是不是很麻烦呢?采用多态我们每次只改变实现类就可以了。
A:可替换性(substitutability)
B:可扩充性(extensibility)
C:接口性(interface-ability)
D:灵活性(flexibility)
E:简化性(simplicity)
4、使用多态的必要条件
A:有继承关系
B:向上转型
C:必须有重写
5、多态的标志
A:方法参数为借口或父类
B:返回值为父类