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

来源:互联网 发布:星光网络摄像机 编辑:程序博客网 时间:2024/05/05 20:37

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

1 0
原创粉丝点击