父方法可以检查哪个子方法调用它吗?

时间:2016-12-23 21:09:28

标签: java class methods parent-child

我对Java很新,我正在编写一个程序,它有两个使用相同父方法的子类,我想找到一种方法来跟踪哪一个调用该方法。

示例:

public class Parent(){
    public static int ChildOneUses, ChildTwoUses;
    public void Example(){
        /* code */
        if(/*ChildOne called the method*/)
            ChildOneUses++;
        else if(/*ChildTwo called the method*/)
            ChildTwoUses++;
    }
}

public class ChildOne extends Parent(){
    /* code */
}
public class ChildTwo extends Parent(){
    /* code */
}

public static void main(String[] args){
    ChildOne ChildOne = new ChildOne();
    ChildTwo ChildTwo = new ChildTwo();

    ChildOne.Example();

    ChildTwo.Example();
    ChildTwo.Example();
}

/* If this code were to run, ChildOneUses would equal 1 and ChildTwoUses would equal 2 */

我不确定这个问题是否只有一个答案,只需将父方法移动到每个子类中以便自己跟踪它们。

2 个答案:

答案 0 :(得分:1)

您可以在父类中设置childType。

public class Parent(){
   public static int childOneUses, childTwoUses;
   public static int childType;

   public Parent(int childType) {
      this.childType = childType;
   }

   public void example(){
    if(childType == 1) {
        childOneUses++;
    }
    else if(childType == 2) {
        childTwoUses++;
    }
   }
}

public class ChildOne extends Parent(){
  public ChildOne() {
    super(1);
  }
}

public class ChildTwo extends Parent(){
  public ChildTwo() {
    super(2);
  }
}

public static void main(String[] args){
ChildOne childOne = new ChildOne();
ChildTwo childTwo = new ChildTwo();

childOne.example();

childTwo.example();
childTwo.example();
}

答案 1 :(得分:0)

你可以在子类中创建一个显示类名的方法,或者你可以在父类中使用这个方法让其他孩子获得方法现在你想要跟踪你想让ocject调用这个方法 的 nameOfObject.getClass()。的getName()

例如,如果你接受字符串s并写 s.getClass()。getName() 输出是 java.lang.String 现在你可以使用这个输出,只取你想要的最后一个单词,你得到了类名