刚刚发现昨晚提问的问题发错了,run()里面不是super.point(),而是super.run(),代码如下: class A{
public void point(){
System.out.println("point A");
}
public void run(){
point();
}
}class B extends A{
public void point(){ System.out.println("point B");
} public void run(){
super.run();
point();
}
}class C extends B{
public void point(){
System.out.println("point C");
} public void run(){
super.run();
point();
}
}我想实现运行C.run(),能打印出A,B,C,除了在point()里面写super.point(),还有其他办法吗
public void point(){
System.out.println("point A");
}
public void run(){
point();
}
}class B extends A{
public void point(){ System.out.println("point B");
} public void run(){
super.run();
point();
}
}class C extends B{
public void point(){
System.out.println("point C");
} public void run(){
super.run();
point();
}
}我想实现运行C.run(),能打印出A,B,C,除了在point()里面写super.point(),还有其他办法吗
除非你在C.run()中写
System.out.println("point A");
System.out.println("point B");
System.out.println("point C");你的代码中C调用父类(B)而B又调用自己的父类(A)
所以输出为
point A
point B
point C
如果你想达到什么效果,那就直接在方法里实现,不要想着从继承上去自动实现
class A
{
public A()
{
System.out.println("point A");
}
}class B extends A{
public B()
{
System.out.println("point B");
}
}
class C extends B
{
public C()
{
System.out.println("point C");
}
}
public class Test3
{
public static void main(String[] args)
{
C c=new C();
}
}
楼主的代码执行的结果是
point c
point c
point C啊,也只能是三个c 啊