【发布时间】:2019-01-15 19:55:51
【问题描述】:
在下面给出的代码中,我理解第一部分,当我调用 c1.show() 时,它只会覆盖公共和受保护的部分。但是我不明白当我调用 c2.show() 时,为什么它也覆盖了 pac()。
package P1;
public class Base {
private void pri( ) { System.out.println(“Base.pri()”); }
void pac( ) { System.out.println(“Base.pac()”); }
protected void pro( ) { System.out.println(“Base.pro()”); }
public void pub( ) { System.out.println(“Base.pub()”); }
public final void show( ) {
pri(); pac(); pro(); pub(); }
}
package P2;
import P1.Base;
public class Concrete1 extends Base {
public void pri( ) { System.out.println(“Concrete1.pri()”); }
public void pac( ) { System.out.println(“Concrete1.pac()”); }
public void pro( ) { System.out.println(“Concrete1.pro()”); }
public void pub( ) { System.out.println(“Concrete1.pub()”); }
Concrete1 c1 = new Concrete1();
c1.show( );
输出:
Base.pri()
Base.pac()
Concrete1.pro()
具体1.pub()
package P1;
import P2.Concrete1;
public class Concrete2 extends Concrete1 {
public void pri( ) { System.out.println(“Concrete2.pri()”); }
public void pac( ) { System.out.println(“Concrete2.pac()”); }
public void pro( ) { System.out.println(“Concrete2.pro()”); }
public void pub( ) { System.out.println(“Concrete2.pub()”); }
}
Concrete2 c2 = new Concrete2();
c2.show( );
输出:
Base.pri()
Concrete2.pac()
Concrete2.pro()
Concrete2.pub()
【问题讨论】:
-
是的,它是 Concrete2,我已经编辑了帖子。
标签: java inheritance overriding