数组元素为引用时继承、包含判断

public class Array {
    public static void main(String[] args) {
//        以下3行可以写到数组花括号内
//        Animal a = new Animal();
//        Mammal m = new Mammal();
//        Cat c = new Cat();
        
        Animal[] animals= {new Animal(), new Mammal(), new Cat()};

        /**
         * S instanceof T二元运算符,返回boolean类型。
         * 判断前面的对象S是否是后面T的类,或者其子类、实现类的实例。如果是返回true,否则返回false。
         * 必须要同一树下、引用变量不能是基本类型、
         * S如果为null,则返回false;否则设S为obj的类型对象,剩下的问题就是检查S是否为T的子类型.如果S == T,则返回true;
         */

        //如果有包含关系,先判断最里层,否则可能永远访问不了最里层
        
        for (int i = 0; i<animals.length; i++){
            if(animals[i] instanceof Cat){
                Cat cat = (Cat)animals[i];
                cat.jump();
            }else if(animals[i] instanceof Mammal){
                Mammal mammal = (Mammal)animals[i];
                mammal.walk();
            }else{
                animals[i].move();
            }
        }
    }
}


//extends 继承

class Animal{
    public void move(){
        System.out.println("animals is moving..");
    }
}
class Mammal extends Animal{
    public void walk(){
        System.out.println("mammal is walking");
    }
}
class Cat extends Mammal{
    public void jump(){
        System.out.println("cat is jumping");
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值