版权声明:本文为博主原创文章,未经博主允许不得转载。 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进行判断即可.