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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013055213/article/details/60325643

这个问题其实很简单,但是今天有人突然一说竟然不知道该怎么做了,我记得是使用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进行判断即可.

猜你喜欢

转载自blog.csdn.net/u013055213/article/details/60325643