2014-01-25 15 views
6

Я довольно новый в java, и я делаю простую программу, но не знаю, почему я получаю сообщение об ошибке в своей программе, когда я пытаюсь использовать super. .. Кто-нибудь может объяснить мне или мою ошибку, потому что он не принимает super.myCoord(), что я должен изменить или добавить?Super() не работает над моим расширением class

public class myCoord { 

    private double coorX, coorY; 

    public myCoord(){ 
     coorX = 1; 
     coorY = 1; 
    } 

    public myCoord(double x,double y){ 
     coorX = x; 
     coorY = y; 
    } 

    void setX(double x){ 
     coorX = x; 
    } 

    void setY(double y){ 
     coorY = y; 
    } 

    double getX(){ 
     return coorX; 
    } 

    double getY(){ 
     return coorY; 
    } 

    public String toString(){ 
     String nuevo = "("+coorX+", "+coorY+")"; 
     return nuevo; 
    } 

    public class Coord3D extends myCoord{ 
     private double coorZ; 

     Coord3D(){ 
      super.myCoord(); // ---> I got an error here !! 
      coorZ = 1; 
     } 

     Coord3D(double x, double y, double z){ 
      super.myCoord(x,y); ---> Also here !! 
      coorZ = z; 

     } 

     void setZ(double z){ 
      coorZ = z; 
     } 

     double getZ(){ 
      return coorZ; 
     } 

    } 
+5

Изменение в 'супер();' и 'супер (х, у);' – AntonH

+0

Там нет необходимости делать coorX и coorY частный, если вы позволяете ему быть прочитан и написал с добытчиками и сеттеров , – Troubleshoot

+2

Имена ваших классов должны начинаться с заглавной буквы; например 'MyCoord' вместо' myCoord'. –

ответ

5

Вы должны вызывать методы, а не конструкторы, используя точку (.) оператора. Здесь вы вызываете конструктор супер класса, используя точку (.).

Вот почему вы получаете ошибки, подобные этим:

The method myCoord() is undefined for the type myCoord 

и

The method myCoord(double, double) is undefined for the type myCoord 

Используйте их для вызова супер конструктор: super(); и super(x,y);, как показано ниже.

public class Coord3D extends myCoord { 
    private double coorZ; 

    Coord3D() { 
     super(); // not super.myCoord(); its a constructor call not method call 
     coorZ = 1; 
    } 

    Coord3D(double x, double y, double z) { 
     super(x,y); // not super.myCoord(x,y); its a constructor call not method call 
     coorZ = z; 
    } 
} 
1
super() 


super(x,y); 

они должны быть такими, вы вызываете конструктор

10

Вызов конструктора по super «s в Java выполняется super(), либо с аргументами или без них. В вашем случае:

public class Coord3D extends myCoord{ 
    private double coorZ; 

    Coord3D(){ 
     super(); 
     coorZ = 1; 
    } 

    Coord3D(double x, double y, double z){ 
     super(x,y); 
     coorZ = z; 

    } 

    // rest of the class snipped 
} 
2
public class myCoord { 

    private double coorX, coorY; 

    public myCoord(){ 
     coorX = 1; 
     coorY = 1; 
    } 

    public myCoord(double x,double y){ 
     coorX = x; 
     coorY = y; 
    } 

    void setX(double x){ 
     coorX = x; 
    } 

    void setY(double y){ 
     coorY = y; 
    } 

    double getX(){ 
     return coorX; 
    } 

    double getY(){ 
     return coorY; 
    } 

    public String toString(){ 
     String nuevo = "("+coorX+", "+coorY+")"; 
     return nuevo; 
    } 

    public class Coord3D extends myCoord{ 
     private double coorZ; 

     Coord3D(){ 
      super(); // ---> I got an error here !! 
      coorZ = 1; 
     } 

     Coord3D(double x, double y, double z){ 
      super(x,y); ---> Also here !! 
      coorZ = z; 

     } 

     void setZ(double z){ 
      coorZ = z; 
     } 

     double getZ(){ 
      return coorZ; 
     } 

    } 
Смежные вопросы