如何区分子类?

时间:2019-05-18 10:37:36

标签: java inheritance return-type

我有Parent类和两个子类。 我想在我的方法checkType(List<Parent>)中建立一个条件 我的主要班级 Parent.getClass()返回Child1还是Child2 假设我有一个存储所有对象的列表。 因此,checkType方法可以计算列表中有多少child1和child2。

abstract class Parent
{
...

   public Parent getClass
   {
     ...
   }

}

class Child1 extends Parent
{
...    
}

class Child2 extends Parent
{
... 
}

3 个答案:

答案 0 :(得分:1)

if (obj1 instanceof Child1) {
    System.out.println(Child1.class.toString());
} else if (obj1 instanceof Child2) {
    System.out.println(Child2.class.toString());
}

答案 1 :(得分:0)

在这样的父类中添加方法checkType

public String checkType(Parent instanceToCheck){
     if(instanceToCheck instanceOf Child1){
          return "Child1";
     }
     if(instanceToCheck instanceOf Child2){
          return "Child2";
     }
     return null;
}

答案 2 :(得分:0)

在父类中创建一个函数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"
}