面向对象之多态

2021-10-15  本文已影响0人  公子请留步LookMe

1.多态的前提1:是继承
2.多态的前提2:要有方法的重写
3.父类引用指向子类对象,如:Animal a = new Cat();
解释:创建出来的子类对象的地址值,交给父类类型的引用类型变量保存
4.多态中,编译看左边,运行看右边
解释:必须要在父类定义这个方法,才能通过编译,把多态对象看作父类类型。
必须要在子类重写这个方法,才能满足多态,实际干活的是子类

package cn.tedu.oop;
/*本类用作多态的入门案例*/
public class TestDemo {
    public static void main(String[] args) {
        //6.创建”纯纯的“对象用于测试
        Animal a = new Animal();
        Cat c = new Cat();
        Dog d = new Dog();
        //7.调用方法进行测试
        a.eat();//小动物Animal吃啥都行~
        c.eat();//小猫爱吃小鱼干~执行的是重写以后的功能
        d.eat();//小狗爱吃肉骨头~执行的是重写以后的功能
        /*2.父类不能调用子类的特有功能*/
        //a.play();
        c.play();//小猫Cat跳的老高啦~,子类可以调用自己的功能
        d.play();//小狗Dog跑的老快啦~,子类可以调用自己的功能

        //8.创建多态对象进行测试
        /*3.口诀1:父类引用指向子类对象
        * 解释:创建出来的子类对象的地址值交给父类类型的引用类型变量来保存*/
        Animal a2 = new Cat();
        Animal a3 = new Dog();
        /*4.口诀2:编译看左边 运行看右边
        * 解释:必须要父类定义这个方法,才能通过编译,编译时,把多态对象看作是父类类型
        *      必须要子类重写这个方法,才能满足多态,运行时实际干活的是子类*/
        a2.eat();//小猫爱吃小鱼干~,多态对象可以调用重写后的方法
        //a2.play();//多态对象把自己看作是父类类型,不能使用子类的特有方法

    }

}
/*1.多态的前提:继承+重写*/
//1.创建父类
class Animal{
    //3.提供父类的普通方法
    public void eat(){
        System.out.println("小动物Animal吃啥都行~");
    }
}
//2.1创建子类小猫类Cat并与Animal建立继承关系
class Cat extends Animal{
    //4.1添加子类重写的方法
    @Override//此注解表明本方法是一个重写的方法
    public void eat(){
        System.out.println("小猫爱吃小鱼干~");
    }
    //5.1添加子类特有的功能
    public void play(){
        System.out.println("小猫Cat跳的老高啦~");
    }
}
//2.2创建子类小狗类Dog并与Animal建立继承关系
class Dog extends Animal{
    //4.2添加子类重写的方法
    @Override//此注解表明本方法是一个重写的方法
    public void eat(){
        System.out.println("小狗爱吃肉骨头~");
    }
    //5.2添加子类特有的功能
    public void play(){
        System.out.println("小狗Dog跑的老快啦~");
    }
}


上一篇下一篇

猜你喜欢

热点阅读