标题: 看下面的程序,请给出注释 [打印本页] 作者: zhaoalei 时间: 2014-7-21 21:22 标题: 看下面的程序,请给出注释 class Parent
{
public void method1()
{
System.out.println("parent 1");
this.method2();
}
public void method2()
{
System.out.println("parent 2");
}
}
class Son extends Parent
{
public void method1()
{
super();
System.out.println("son 3");
this.method2();
}
public void method2()
{
System.out.println("son 4");
}
}
class Dashen
{
public static void main(String[] arg)
{
Son s=new Son();
s.method1();
}
} 作者: star5603 时间: 2014-7-21 22:37
子类复写了父类的两个方法。
子类调用method1 的时候,super调用的是父类的内容,因而输出“parent 1”。
继而执行this.method2,this代表你创建的对象,是s,此时method2已经被复写,所以是“son4”。
super.method1执行完毕,然后是System.out.println("son 3"),所以输出“son 3”。
最后执行method2,还是“son4”。作者: lijiang 时间: 2014-7-22 10:20
super()代表的是父类的无参数的构造方法,你是想调用method1(),应该是super.method1().
修改程序
class Parent
{
public void method1()
{
System.out.println("parent 1");
this.method2();
}
public void method2()
{
System.out.println("parent 2");
}
}
class Son extends Parent
{
public void method1()
{
super.method1();
System.out.println("son 3");
this.method2();
}
public void method2()
{
System.out.println("son 4");
}
}
class Dashen
{
public static void main(String[] arg)
{
Son s=new Son();
s.method1();
}
}
但是这里面还有覆盖存在作者: rolling-stone 时间: 2014-7-22 12:27
注释为这个,并且super(),书写有错误.先已经改正.
class Parent
{
public void method1()
{
System.out.println("parent 1");
this.method2();//调用父类中method2的方法
}
public void method2()
{
System.out.println("parent 2");
}
}
class Son extends Parent
{
public void method1()
{
super.method1();//调用父类
System.out.println("son 3");
this.method2();//调用子类的method2
}
public void method2()
{
System.out.println("son 4");//将父类里面的method2进行重写.
}
}
class Dashen
{
public static void main(String[] arg)
{
Son s=new Son();
s.method1();
}
}