我正在大学里做这个练习,我都陷入了困境,我想制作一个程序来画圆和直线。它有3个包,Evaluar(主要类别),Dibujo(具有绘画类别)和Forma(具有4个类别,分别是Forma和FormmaBasica继承的FATHER,forma,formabasica,这是主要类别。
package PaqueteAplicacion;
import PaqueteFormas.Forma;
import java.util.Scanner;
import PaqueteFormas.Circulo;
import PaqueteFormas.Linea;
public abstract class Evaluar {
public static void main (String[] args) {
//Creamos atributos para lo que graficaremos
Forma linea1;
Forma linea2;
linea1 = new Linea(); //PROBLEM HERE
linea2 = new Linea(1,1);//PROBLEM HERE
}
Eclipse的错误“无法实例化Linea类型”,我不知道为什么它会给我这个问题。
这是我的Linea课程,我在Circulo上也遇到了同样的问题。
package PaqueteFormas;
import java.util.Scanner;
import PaqueteGraficos.Dibujo;
public class Linea extends FormaBasica {
//Atributos
int numSegmentos;
public Linea(){
}
public Linea(int ejeX, int ejeY){
super(ejeX,ejeY);
}
public void cambiarTamano(int incrementoSegmentos){
numSegmentos = incrementoSegmentos;
}
public void paintComponent() {
Dibujo.dibujarLinea(ejeX, ejeY, numSegmentos);//More Problem ejeX cannot be resolved as a variable
}
}
如果您需要更多信息,请告诉我,谢谢!
对不起,我是StackOverflow的新手,所以如果我的帖子不正确,请告诉我。
我添加了我项目的其余类的java: 这是父亲:福尔玛的课:
package PaqueteFormas;
public abstract class Forma {
//Añadimos atributos
private int x,y;
public Forma()
{
this.x = 1;
this.y = 1;
}
public Forma( int ejeX, int ejeY) {
this.x = ejeX;
this.y = ejeY;
}
//Establece la edición atributo
public void setX(int ejeX) {
x = ejeX;
}
public void setY(int ejeY) {
y = ejeY;
}
public int getX() {
return x;
};
public int getY() {
return y;
};
public void moverEjeX(int variacionEnX) {
x += variacionEnX;
}
public void moverEjeY(int variacionEnY) {
y += variacionEnY;
}
public abstract void paintComponent();
public abstract void cambiarTamano (int variacionTamano);
}
福尔马的遗产课:
package PaqueteFormas;
public abstract class FormaBasica extends Forma {
public FormaBasica(){//Constructor por defecto
super(1,1);
}
public FormaBasica(int ejeX, int ejeY){//Constructor pasando los atributos
super(ejeX,ejeY);
}
}
FormaBasica的其他阶级的遗产
package PaqueteFormas;
import java.util.Scanner;
import PaqueteGraficos.Dibujo;
public class Linea extends FormaBasica {
int numSegmentos;
public Linea(){
}
public Linea(int ejeX, int ejeY){
super(ejeX,ejeY);
}
public void cambiarTamano(int incrementoSegmentos){
numSegmentos = incrementoSegmentos;
}
public void paintComponent() {
Dibujo.dibujarLinea(ejeX, ejeY, numSegmentos);
}
}
答案 0 :(得分:0)
问题的根源在Linea
的这一行:
Dibujo.dibujarLinea(ejeX, ejeY, numSegmentos);//More Problem ejeX cannot be resolved as a variable
该错误消息是有道理的:ejeX
方法中没有变量paintComponent
,该行所在的位置,{中也没有字段(实例或类变量)ejeX
{1}}类。其中一个构造函数中有一个参数Linea
。但是这里的构造函数就像一个方法一样,您不能在另一个方法中访问参数或变量,因为这样做是没有意义的。方法在不同的时间被调用,因此一个方法的变量通常在另一个方法被调用并正在执行时不存在。当然,ejeX
也是如此。
我假设您打算使用创建对象时传递给ejeY
构造函数的ejeX
和ejeY
的值。这些已存储在Linea
超类中,您可以通过该类的Forma
和getX
方法获得它们。因此,解决方法是将行更改为此:
getY
对于您的其他问题:上述错误阻止了 Dibujo.dibujarLinea(getX(), getY(), numSegmentos);
类的编译。如果无法编译,则也无法实例化。所以我希望现在也解决。
如果随着您摆脱旧错误而出现新的错误消息,请不要失望,这是正常的。
相反,这也不是不友好的:看看您是否可以找到当地人来帮助您。也许是同学还是助教? Stack Overflow的周转时间太长,因此只要您依赖我们,您的进度就会很慢。在您发布太多代码时,甚至更多,因为许多用户会放弃阅读全部代码。