【发布时间】:2018-11-20 19:43:15
【问题描述】:
我正在做这个大学练习,我被困住了,我想制作一个程序来画圆和线。它有 3 个包,Evaluar(带有主类),Dibujo(带有绘图类)和 Forma(带有 4 个类,The FATHER ,forma,formabasica 继承自 Forma 和 Circulo&Linea 继承自 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
}
}
如果您需要更多信息,请告诉我,谢谢!
对不起,我是 * 的新手,所以如果我的帖子不正确,请告诉我。
我添加了我项目的其他类的 java: 这是父亲:Forma 的班级:
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);
}
来自Forma的Heritage类:
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);
}
}
【问题讨论】:
-
FormaBasica是Forma的子类还是实现类? -
好吧,你没有说你得到了什么错误,但我假设
Forma类没有被FormaBasica扩展,因此你不能使用Linea实例化/跨度> -
好像学习 Java 编程还不够难,现在你也在学习如何使用 Stack Overflow。欢迎到这里!提示:Create a Minimal, Complete, and Verifiable example 如果可能的话。准确说明您希望程序执行的操作,尤其是准确说明它的不当行为。如果您看到任何错误消息,请在您的问题中逐字引用或引用它们。这里的很多人都清楚他们的意思,并且可以在您这样做时当场为您提供帮助。
-
您应该遵循 Java 命名约定:包名应该以小写开头。
-
我添加了我项目类的其余部分。 Linea 是来自 FormaBasica 的扩展类。而FormaBasica 是Forma 的扩展类。