当前位置: 首页 > 面试题库 >

如何从基类实例中找出子类?

潘璞瑜
2023-03-14
问题内容

有没有办法从基类实例中找出派生类的名称?

例如:

class A{
    ....
}
class B extends A{
    ...
}
class c extends A{
    ...
}

现在,如果某个方法返回的对象A,我可以找出它的类型B还是C


问题答案:

使用instanceofClass#getClass()

A returned = getA();

if (returned instanceof B) { .. }
else if (returned instanceof C) { .. }

getClass()要么返回:A.classB.classC.class

在if子句中,您需要向下转换-即

((B) returned).doSomethingSpecificToB();

也就是说,有时认为使用instanceof或是getClass()不好的做法。您应该使用多态性来避免需要检查具体的子类,但是我不能用给出的信息告诉您更多信息。



 类似资料:
  • 原关闭原因未解决 显示实例是来自C类还是C的子类。 有没有办法确保实例不是子类?

  • 问题内容: 我正在创建一个类及其子类,需要在其中调用父级的静态方法以返回子级实例。 问题答案: 该静态方法被调用,其值是类对象,子类,你把它称为后的构造。因此,您可以使用实例化它:

  • 下面是我尝试的代码。我也试图制造任何类型的动物,但没有用。 这可以只用一个函数来完成吗?还是我必须为每个动物子类保留两个分离的“服务”函数?

  • 我目前有一个代码片段,其中对于每个类别,它将找到子类别: 将递归获取一个类别的子级: 目前,使用,只检索子类别的子类别,因此如果每个子类别都有自己的子类别,则不会将其保存到子类别中。 我如何显示子子类别给我们的子类别? 我想用我的代码做的是获取一个父级,获取它的子级,然后将这些子级中的每一个视为父级,递归地获取它的子级,但是我的JSON输出并没有反映这一点。只有父对象有子对象-子对象没有子对象(尽

  • 问题内容: 如果我有一个python类为: 然后定义一个子类,例如: 如果基类的init函数接受某些参数,而我将它们作为子类的init函数的参数,则如何将这些参数传递给基类? 我写的代码是: 我要去哪里错了? 问题答案: 你可以用 您的缩进不正确,这是修改后的代码: 这是输出:

  • 我有java中的类:。和类,它扩展了类。 Class保留Class的实例。 我注意到,当我调用类B的构造函数时(当我在类A中初始化这个参数时),它会执行super(),创建一个新的实例A,并初始化所有It字段。 我如何告诉class