class position{
      int x,y;
      position(int px,int py){x=px;y=py;}
      void show(){System.out.println(x+","+y);}
   }
class spot extends position {
      boolean display;
      spot(int sx,int sy,boolean sf){  super(sx,sy); dispaly=sf;}
      void change(int cx,int cy){x=cx;y=cy;}
}
class box extends spot{
      int r;
      box(int bx,int by,int br,boolean bf){super(bx,by,bf);r=br;}
      void add(int da){r+=da;}
      void red(int da){r+=da;}
      void show(){
           System.out.print("起点:");super.show();
           System.out.print("边长:"+r);
           if(display)System.out.println("显示");
           else System.out.println("不显示");
    }
}
class jex6_23{
    public staic void main(String args[]){
         spot s=new spot(100,100,false);
         System.out.print("s点的坐标;");s.show();
         box b=new box(100,100,30,true);
         b.show();
         b.change(200,300);b.add(50);
         b.show();
    }
}
super(sx,sy);
super(bx,by,bf);
那位能解释一下这两句的意思,所起的作用
谢谢!!!!!
 

解决方案 »

  1.   

    class position{
          int x,y;
          position(int px,int py){x=px;y=py;}
          void show(){System.out.println(x+","+y);}
       }
    class spot extends position {
          boolean display;
          spot(int sx,int sy,boolean sf){  super(sx,sy); dispaly=sf;}
         //spot继承了postion类,可以使用父类的构造函数,但spot有3个形参,父类中只有两个形参
    所以要分开写!super(sx,sy)means :x=sx,y=sy
          简单地说super就是指父类 position!
          不可能讲的更明白了吧
      

  2.   

    super在这里是调用超类的构造函数,你在spot在继承的时候也继承了超类的属性,那么也就是说当前类有三个属性,你要分别为他们初始化,而你当前类的属性只有一个,剩下的两个是超类的,此时你就要用SUPER为父类的属性初始化
      

  3.   

    子类调用父类的 构造(constructor)函数
      

  4.   

    super(sx,sy);
    super(bx,by,bf);每个继承来的类的构造器在进行之前都要调用他们的基类的构造器,在这个新类里面生一个隐式的子对象,如果基类的构造器是不含有参数的话,那么编译器就会隐式的自动为你加入super()这么一条语句,而如果基类的构造器含有参数,就比如你的这个例子,就需要你显式的写入对基类的构造器的调用,也就是super(sx,sy);super(bx,by,bf);这两句代码,他们的意思就是说我要调用基类(超类)的构造器,super的英文单词本身也就含有这层含意。而super后面的括号里面的参数则是与基类的构造器的参数是一一对应的。
      

  5.   

    在这里要弄明白一个概念-----继承, 还有super,this 关键字的作用.这些在一般的 介绍java的书里都可以找得到.
      

  6.   

    super(sx,sy);
    super(bx,by,bf);
    这个是调用超类的构造方法,super(sx,sy);对应的是class position的构造方法,super(bx,by,bf)对应的是class position的构造方法。
      

  7.   

    super(sx,sy);:spot类调用父类position类的构造函数
    super(bx,by,bf);box类调用他的父类spot类的构造函数
    由于spot类继承了他的父类position类的两个属性,所以box类就可以继承包括他父类的自己的一个属性在内的三个属性。
      

  8.   

    子类调用父类构造函数可以这样
    同一个类中后面的构造函数调用前面的构造函数也可以使用super()