• 一维数组中存储的元素类型是“引用数据类型”,可以是多态的情况


    //一维数组中存储的元素类型是“引用数据类型”,可以是多态的情况,如果Cat和Bird都继承了Animal,那么同一个数组中
    // 既可以放Cat也可以放Bird还可以放Animal,如果没有继承关系就不可以这样
    class ArrayText02{
        public static void main(String[] args) {
    //        创建一个Animal类型数组
            Animal a1 = new Animal();
            Animal a2 = new Animal();
            Animal[] animals = {a1,a2};
    
    //        对数组进行遍历
            for (int i = 0; i < animals.length; i++) {
                Animal a = animals[i];
                a.move();
    //            上面两行代码可以合并成如下代码
                animals[i].move();
            }
            System.out.println("****************************");
    
    //        动态初始化一个长度为3的Animal类型数组
            Animal[] ans = new Animal[3];
            ans[0] = new Animal();
    //        下行代码会报错,原因是数组中元素类型要求统一,不能存放不同类型的元素
    //        ans[1] = new String();
    //        同一个数组中可以存放具有继承关系的父子类对象
            ans[1] = new Cat();
            ans[2] = new Bird();
    //        遍历ans数组并调用父子类共同具有的方法
            for (int i = 0; i < ans.length ; i++) {
                ans[i].move();
            }
            System.out.println("--------------------------------");
    //        遍历ans数组并调用子类特有的方法(这里需要向下转型)
            for (int i = 0; i < ans.length; i++) {
                if (ans[i] instanceof Cat){
                    Cat cat = (Cat)ans[i];
                    cat.eat();
                }else if (ans[i] instanceof Bird){
                    Bird bird = (Bird)ans[i];
                    bird.sing();
                }
            }
        }
    }
    //动物类
    class Animal{
        public void move(){
            System.out.println("Animal move ...!");
        }
    }
    
    class Cat extends Animal{
        public void move() {
            System.out.println("猫在走猫步!");
        }
    //    子类中特有的方法
        public void eat(){
            System.out.println("猫在吃老鼠!");
        }
    }
    class Bird extends Animal{
        public void move() {
            System.out.println("鸟儿在飞翔!");
        }
        public void sing(){
            System.out.println("鸟儿在唱歌!");
        }
    }
  • 相关阅读:
    Libgdx游戏开发(4)——显示中文文字
    ubuntu18.04 下海康工业相机hikrobot_camera的使用及问题的解决
    07-架构2023版-centos+docker部署Canal 实现多端数据同步
    matlab求解实际问题
    深入props --React进阶指南笔记
    IT统一运维软件发展趋势浅析
    配置mysql+Navicat+XShell宝塔:Mark
    面向对象和面向过程编程的区别
    LeetCode - 354 俄罗斯套娃信封问题
    搭建Spark开发环境
  • 原文地址:https://blog.csdn.net/heliuerya/article/details/128159544