Java 如何区分子类?

Java 如何区分子类?,java,inheritance,return-type,Java,Inheritance,Return Type,我有父类和两个子类。 我想在我的方法检查类型(列表)中设置一个条件 我的主课 父.getClass()是返回Child1还是返回Child2 假设我有一个存储所有对象的列表。 因此checkType方法可以计算列表中有多少child1和child2 abstract class Parent { ... public Parent getClass { ... } } class Child1 extends Parent { ... } class

我有父类和两个子类。 我想在我的方法
检查类型(列表)
中设置一个条件 我的主课 父.getClass()是返回Child1还是返回Child2 假设我有一个存储所有对象的列表。 因此checkType方法可以计算列表中有多少child1和child2

abstract class Parent
{
...

   public Parent getClass
   {
     ...
   }

}

class Child1 extends Parent
{
...    
}

class Child2 extends Parent
{
... 
}

在父类中创建函数
checkType()
。您可以在子类中重写此函数,以指示它是哪个子类。比如说,

abstract class Parent {
  public abstract String checkType();
} 
public class Child1 extends Parent {
  public String checkType() {
    return "Child 1"
}
public class Child2 extends Parent {
  public String checkType() {
    return "Child 2"
} 

那么,
checkType
在哪里?你如何使用它呢?比如说在我的主课上。我想比较一下,如果是child1,那么返回True1对不起,我不清楚你在这里想要实现什么。我看不出
getClass
返回类型为
Parent
的对象有什么意义,根据您的描述,它应该是字符串,不是吗?如果您想知道在Main类中,
Parent
的某个实例的具体类型,只需在那里使用
instanceof
。。。但是,在
Parent
class?中,方法
getClass
有什么意义呢?。请把你的问题说清楚,以便更好地帮助你。是的,这就是我想问的。Thanks@lealceldeiro我已经编辑了我的问题。我知道使用instanceOf就是答案。我只是想让每个人都明白一点。虽然有效,但完全没有必要。您可以使用instanceof检查任何引用(如果它属于特定类)。你在重新发明轮子,而且很糟糕。是的,我一开始没想到。tbh,我对此有不同的看法,在有些情况下,我必须知道儿童班的“类型”,而实际上不知道所有的子班。但是是的,如果子类是已知的,那么这应该是公认的答案。✌@GhostCat,你能解释为什么你认为这是“坏”(除了它重新发明车轮)?
if (obj1 instanceof Child1) {
    System.out.println(Child1.class.toString());
} else if (obj1 instanceof Child2) {
    System.out.println(Child2.class.toString());
}