因此,我一直在为编程类编写抽象作业,但遇到了问题。我现在的目标是能够使用抽象,然后能够使用矩形和椭圆形绘制一个简单的城市,例如矩形建筑物或灯柱上的椭圆形灯。
我在编译时收到的错误是:MyTestApp.Rectangle不是抽象的,并且不会覆盖MyTestApp.Shape中的抽象方法drawEllipse(java.awt.Graphics)。该错误显示在类Shape下方的“矩形扩展类Shape
{”类中。
我的问题是我的抽象错了吗?我一直在弄乱Rectangle和Ellipse类中的构造函数和draw()方法,有一段时间了,但仍然找不到找到解决方案的运气。
代码如下:
import java.awt.*;
import javax.swing.*;
public class MyTestApp extends JPanel {
Rectangle rect;
Ellipse oval;
public static void main(String [] args) {
MyTestApp myTestApp = new MyTestApp ();
myTestApp.test();
}
public MyTestApp () { //creates the jframe
JFrame frame = new JFrame("MyClass Driver");
setBackground(new Color(200, 250, 200));
setPreferredSize(new Dimension(500, 400));
frame.add(this);
frame.pack();
frame.setVisible(true);
}
public void delay(int msecs) {
try {
Thread.sleep(msecs);
} catch (InterruptedException e) {
}
}
public void paint(Graphics g) {//paints the rectangle and ellipse
super.paint(g);
if (rect != null)
rect.drawRectangle(g);
if (oval != null)
oval.drawEllipse(g);
}
public void test() {//gives the x/y position, width/height, and fill/outline color for the rectangle and oval
delay(1000);
rect = new Rectangle(20, 30, 23, 75, Color.GREEN, Color.BLUE);
oval = new Ellipse(10, 10, 10 , 34, Color.RED, Color.MAGENTA);
repaint();
}
public abstract class Shape{//abstract class Shape that sets the x/y, width/height, and colors for the shapes
private int x, y, width, height;
private Color fillColor;
private Color outlineColor;
public Shape(int x, int y, int width, int height, Color fillColor, Color outlineColor) {
setXY(x, y);
setSize(width, height);
setFillColor(fillColor);
setOutlineColor(outlineColor);
}
public boolean setXY(int x, int y) {
this.x = x;
this.y = y;
return true;
}
public void setSize(int width, int height) {
if (width > 0)
this.width = width;
if (height > 0)
this.height = height;
}
public boolean setFillColor(Color fillColor){
if (fillColor == null) return false;
this.fillColor = fillColor;
return true;
}
public boolean setOutlineColor(Color outlineColor){
if (outlineColor == null) return false;
this.outlineColor = outlineColor;
return true;
}
public Color getFillColor() {
return fillColor;
}
public Color getOutlineColor() {
return outlineColor;
}
public abstract void drawRectangle(Graphics g);//do i need two?
public abstract void drawEllipse(Graphics g);//do i need both?
}
class Rectangle extends Shape{//!!!!!!!!!! where the error shows
public Rectangle(int x, int y, int width, int height, Color fillColor, Color outlineColor) {
super(x, y, width, height, fillColor, outlineColor);
}
public void drawRectangle(Graphics g){//draws the retangle
g.setColor(fillColor);
g.fillRect(x, y, width, height);
g.setColor(outlineColor);
g.drawRect(x, y, width, height);
}
}
class Ellipse extends Shape{
public Ellipse(int x, int y, int width, int height, Color fillColor, Color outlineColor) {
super(x, y, width, height, fillColor, outlineColor);
}
public void drawEllipse(Graphics g){//draws the ellipse
g.setColor(fillColor);
g.fillOval(x, y, width, height);
g.setColor(outlineColor);
g.drawOval(x, y, width, height);
}
}
}
感谢您的阅读和帮助!
Rectangle和Ellipse这两个类都需要覆盖这两个抽象方法。
要变通解决此问题,您有3个选项:
abstract class Shape {
// ...
void draw(Graphics g);
}
和
class Rectangle extends Shape {
void draw(Graphics g) {
// ...
}
}
最后
class Ellipse extends Shape {
void draw(Graphics g) {
// ...
}
}
您可以在它们之间切换,如下所示:
Shape shape = new Ellipse();
shape.draw(/* ... */);
shape = new Rectangle();
shape.draw(/* ... */);
再次,只是一个例子。
问题内容: 这就是我的代码。它给我一个错误说“QuadraticSolver.java:4:错误:不,不重写抽象方法在 ” 我不知道该怎么做。我尝试在所有ActionListener事件之前添加@Override,但仍然无法正常工作。 问题答案: 既然实施,就应该实施。 您在匿名类中实现了该方法。 为了解决这个问题,无论是添加的实现 来或不要求实现该接口。
请帮帮忙!!我一直在到处寻找,但没有得到答案 错误:MainApplication不是抽象的,并且不覆盖抽象方法 环境 android/build.gradle系统 App/build.gradle 我的主应用程序 错误: 任务:app:compileDebugJavaWithJavac C:\Users\user\Downloads\Scripts\kantongin mobile\trader
//AListener不是抽象的,也不会覆盖抽象方法actionPerform(ActionEvener)中的ActionListener????
我尝试了所有的可能性,但错误仍然出现: 选择java:4:错误:Select不是抽象的,并且不会覆盖ActionListener中的抽象方法actionPerformed(ActionEvent)
我是android开发的新手,在我的应用程序中,我使用房间数据库来进入数据库。
我试图创建一个实现ActionListener的类,我可以将该类注册到我的按钮。 我看到了:景色。侦听器不是抽象的,并且不会覆盖ActionListener中的抽象方法actionPerformed(ActionEvent) 我曾尝试将其实现为匿名类,但也遇到了同样的错误。我想不出来。