美文网首页
面向对象之多态

面向对象之多态

作者: 公子请留步LookMe | 来源:发表于2021-10-15 14:15 被阅读0次

    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跑的老快啦~");
        }
    }
    
    
    

    相关文章

      网友评论

          本文标题:面向对象之多态

          本文链接:https://www.haomeiwen.com/subject/bsruoltx.html