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:  类型转换异常   两个没有任何关联的类是不能转换的
    //                                                                      两个类是一种父子类关系,可以实现转换
        }
    
    }
  • 相关阅读:
    HTML Rendering Error
    PyCharm将选中的内容加上引号
    Scrapy中的Request和日志分析
    PyCharm关闭按两次Shift进入搜索框的功能
    博客园更换模板的链接
    Scrapy的Spider类和CrawlSpider类
    Scrapy安装和简单使用
    计算π的近似值
    Python用pip安装第三方库时换源下载
    网页解析 -- bs4 和 xpath 的简单使用
  • 原文地址:https://www.cnblogs.com/rxqq/p/13922497.html
Copyright © 2011-2022 走看看