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
- java多态使用时,如果想要调用子类特有属性如何做.
- java多态情况下通过类型转换访问子类特有的成员
- 1.为什么需要继承?如何继承?继承到什么? 2.方法的重载与重写的区别 3.类型的自动转换和强制转换 4.子类特有的方法的调用规则 5.子类重写的方法的调用规则 6.多态的理解 7.面向对象的三大特征
- java继承 父类子类方法调用问题 属性和静态方法是没有多态的
- java this 子类调父类,父类再调用子类已覆盖的方法及属性(又一次理解)
- JAVA进阶 面向对象程序设计——第4章 继承与多态【不同访问属性使子类在使用这些成员时不同】
- Effective Java读书笔记--如果想要知道精确的答案,就要避免使用double和float
- java子类如何调用父类变量和方法
- 如何抽象子类属性不一
- 子类与父类属性或方法重名时,使用super.(属性名/方法名)调用父类型属性或方法
- java基础------>继承--->属性(在子类中调用父类同名属性的两种方式)
- Java之Vector特有功能使用
- 使用Java的子类调用构造方法super()和this()
- java中实例子类会有父类对象产生吗?如果不产生父类对象为什么子类有父类的属性和方法?
- Java里子类调用父类构造方法把父类的内容继承怎么做?
- IE特有属性hasLayout
- Java父类调用子类
- Java调用子类重写方法
- 日语——目录
- 使用MyBatis的默认(数据库字段和属性名忽略大小匹配)映射方式,必须有无惨构造函数。
- angularjs 实现动态添加控件
- JAVA基础训练之模拟双色球实现案列
- Android《第一行代码》第4章 笔记
- java多态使用时,如果想要调用子类特有属性如何做.
- 字符串操作
- 全国政协十二届五次会议开幕,汪国新委员出席并听取会议报告
- pb_ds库的讲解和应用举例
- scrapy框架爬取51job网
- php 与java在实现抽象方法上的不同
- Lucene Field域的详解(二)
- java正则表达式详解
- concat方法