zoukankan      html  css  js  c++  java
  • 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:  类型转换异常   两个没有任何关联的类是不能转换的
    //                                                                      两个类是一种父子类关系,可以实现转换
        }
    
    }
  • 相关阅读:
    vscode开发vue项目保存时自动执行lint进行修复
    React学习笔记-生命周期函数
    react 学习笔记
    iview的Affix组件滚动时没有按照预期固定
    iview input实现默认获取焦点并选中文字
    修改 浏览器滚动轴样式
    node连接mysql数据库
    mysql图形化管理工具workbench下载安装以及基本使用
    mysql 8.0版本下载安装以及默认密码修改
    节流和防抖 区别和实现
  • 原文地址:https://www.cnblogs.com/rosiness/p/13928727.html
Copyright © 2011-2022 走看看