我有一个方法的类,我想让执行到子类。例如:
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方法不能是抽象的......
答案 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