黑马程序员技术交流社区

标题: 看下面的程序,请给出注释 [打印本页]

作者: 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();
       }
}

/*输出结果
parent 1
son 4
son 3
son 4
*/





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2