• 19_多态应用以及引用类型转换的例子


    首先定义一个类动物类

    package ploy;
    //定义一个动物测试类
    public class TestAnimal {
    
        public static void main(String[] args) {
            //   多态形式   父类引用指向子类对象
            Animal animal = new Cat();
            //调用eat()方法    备注:当你在使用多态的时候,程序会首先检查父类中是否含有该方法,
            //如果没有,择编译错误; 如果有,执行的是子类重写之后的方法。
            animal.eat();
    
            Animal animal2 = new Dog();
            //调用eat()方法
            animal2.eat();
    
            //调用eat()方法
            //Cat cat = new Cat();
            //Dog dog = new Dog();
    
            showCatEat(new Cat());//Animal animal = new Dog();    dog
       /*     //查看猫吃的东西
            showCatEat(cat);*/
      /*      //查看狗吃的东西
            showDogEat(dog);*/
    
    
        }
            //查看猫具体吃什么东西
        public static void showCatEat(Cat cat){
            cat.eat();
        }
            //查看狗具体吃什么东西
            public static void showDogEat(Dog dog){
                dog.eat();
            }
    
         /*
                以上两个方法,可以简化一下
    
            */
            //查看动物他吃什么
            public static void  showAnimalEat(Animal animal){
                animal.eat();
            }
    
    }

    狗的类:

    package ploy;
    //定义一个字类
    public class Dog extends Animal{
    
    
        //子类重写父类中的eat()方法
        @Override
        public void eat() {
            System.out.println("看骨头");
        }
    
        //看家
        public void lookHome(){
    
        }
    
    
    
    }

    猫的类:

    package ploy;
    //定义一个子类
    public class Cat extends Animal{
    
        //子类重写父类中的eat()方法
        @Override
        public void eat() {
            System.out.println("吃鱼");
        }
    
        //抓老鼠
        public void catchMouse(){
            System.out.println("抓老鼠");
        }
    
    }

    测试类:

    package ploy;
    //定义一个动物测试类
    public class TestAnimal02 {
    
        public static void main(String[] args){
            //多态的形式   父类引用指向子类对象
            //向上转型
            Animal animal = new Dog();
            //猫抓老鼠的功能
            animal.eat();
    
            //狗看家的功能
            //添加校验instanceof    变量名  instanceof   数据类型
            if (animal instanceof Dog){
                //表明他是Dog类型
            Dog dog = (Dog) animal;
            dog.lookHome();
        }
            if (animal instanceof Cat){
    
            //向下转型   子类类型   变量名   =   (子类类型)  父类变量名
            Cat cat = (Cat) animal;
            cat.catchMouse();
        }
    // java.lang.ClassCastException:  类型转换异常   两个没有任何关联的类是不能转换的
    //                                                                      两个类是一种父子类关系,可以实现转换
        }
    
    }
  • 相关阅读:
    制作软件说明书的图片编辑工具推荐PicPick
    浅谈配网供电可靠性及管理措施
    C#的winform中MDI 父窗体改变背景色
    Windows完成端口与Linux epoll技术简介
    django中的form表单
    调整图层初识3
    PS图层混合模式详解
    图层混合模式之正片叠底、滤色
    photoshop调整图层初识1
    调整图层初识2
  • 原文地址:https://www.cnblogs.com/rxqq/p/13922497.html
Copyright © 2020-2023  润新知