栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如果父母的实例,instanceof是否返回true?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如果父母的实例,instanceof是否返回true?

是的,会的。为什么不呢?

因为child实际上是Parent的一个实例。如果您只想为孩子做手术,应该检查一下

if (child instanceof Child){}

但是,您应该记住Scott Meyers撰写的来自Effective C ++的以下声明:

“每当您发现自己编写的代码形式为:“如果对象的类型为T1,则执行某些操作,但是如果对象的类型为T2,则执行其他操作。”

我认为在这种情况下也适用。如果你想 DoSomething的 依据是什么类型的类的引用对象所属的,下面的代码结构应该来帮您吧。

注意: 我尚未编译它。

class Parent {    public void doSomething() {        System.out.println("I am the Parent, and I do as I like");    }}class ChildA extends Parent {    public void doSomething() {        System.out.println("I am a child named A, but I have my own ways, different from Parent");    }}class ChildB extends Parent {    public void doSomething() {        System.out.println("I am a child named B, but I have my own ways, different from my Parent and my siblings");    }}public class Polymorphism101 {    public static void main(String[] args) {        Parent p = new Parent();        p.doSomething();        p = new ChildA();        p.doSomething();        p = new ChildB();        p.doSomething();    }}

编辑:一个更好的例子

您可能正在开发 绘图 应用程序。绘制任何形状的应用程序。在这种情况下,您应该有一个 抽象 类型

Shape

出于以下目的:绘制所有形状;列出所有形状;查找形状或删除形状,您需要具有形状 列表 。由于列表是父类型,因此它可以存储任何形状。

Shape
接口/抽象类/虚拟类 应该有一个 抽象/纯虚
函数
Draw()
。因此,在DrawToDeviceLoop中,您只需调用
Draw()
每个形状,而无需检查它是什么形状。

Shape
接口可以具有 抽象
实现
AbstractShape
,该实现可以具有形状名称或ID作为数据成员以及GetName,Cleanup和其他功能,这些功能具有所有形状共有的功能。

记住,抽象类型 不能 被实例化,所以

Shape
它本身也不能被实例化,因为它也不能被绘制。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/569959.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号