java多态使用时,如果想要调用子类特有属性如何做.

这个问题其实很简单,但是今天有人突然一说竟然不知道该怎么做了,我记得是使用instance of,但有同事说这是判断是否是父类的,其实也可以判断是否是他的子类.
这里写图片描述

为了验证是否正确,我写了一个demo验证一下.

1. Animal

public interface  Animal {
    public void eat();
    public void run();
}

2. Dog

public class Dog implements Animal {
    @Override
    public void eat() {
        System.out.println("狗吃肉");
    }

    @Override
    public void run() {
        System.out.println("狗用四条腿跑");
    }

    public void fei() {
        System.out.println("小狗汪汪叫");
    }
}

3. Bird

public class Bird implements Animal {


    @Override
    public void eat() {
        System.out.println("鸟吃米");
    }

    @Override
    public void run() {
        System.out.println("鸟用两只腿跑");
    }

    public void zha() {
        System.out.println("小鸟喳喳叫");
    }
}

4. Test测试

public class MainActivity extends AppCompatActivity {
    private Bird mBrid;
    private Dog mDog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mBrid = new Bird();
        mDog = new Dog();
        duoTai(mBrid);
        duoTai(mDog);
    }

    public void duoTai(Animal animal) {
        if (animal instanceof Animal) {
            System.out.println("它是一个动物");
        }
        if (animal instanceof Dog) {
            System.out.println("它是一只狗");
            Dog dog = (Dog) animal;
            dog.fei();
        }
        if (animal instanceof Bird) {
            System.out.println("它是一只鸟");
            Bird bird = (Bird) animal;
            bird.zha();
        }
    }
}

最后打印的结果是:
它是一个动物
它是一只鸟
小鸟喳喳叫
它是一个动物
它是一只狗
小狗汪汪叫

所以如果想要使用子类的特有属性就可以使用instance of进行判断即可.

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值