从孩子那里打电话保护方法

时间:2015-10-16 10:07:23

标签: java

我有一个方法的类,我想让执行到子类。例如:

public class Parent {
protected void foo(){return null;}
private void bar(foo());
}
public class Child {
@Override protected void foo(){//do something}
}

我想在bar方法中调用child而不是parent的foo方法。它总是调用父方法。 foo方法不能是抽象的......

1 个答案:

答案 0 :(得分:7)

this.foo(); 代码中,如果您这样做:

Child

...然后提供的对象是Child个实例,它将被调用foo' s extends Parent。这是多态性的重要组成部分。 (当然,假设您将Child添加到class Example { public static void main (String[] args) { new Child().bar(); } } class Parent { protected void foo() { System.out.println("Parent#foo"); } public void bar() { this.foo(); } } class Child extends Parent { @Override protected void foo() { System.out.println("Child#foo"); } } 声明中。)

示例:(live copy on IDEOne

<p:dataGrid id="chartdataGrid" var="controlLoopChart" value="#{analysisreports.controlLoopCharts}"  columns="1" style="border:none;">
      <p:chart type="bar" model="#{controlLoopChart.bcharts}"/>
</p:dataGrid>

输出:

Child#foo