-3

您好,经过一番困惑后,我创建了以下代码

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Tri extends RandomShape{

 public void paintComponent (Graphics g){
 // create random variables for collor and shape of triangle
int x;
int y;
int x2;
int y2;

x = (int) Math.random()*100;
y = (int) Math.random()*100;
x2 = (int) Math.random()*100; 
y2 = (int) Math.random()*100;

int r1;
int g1;
int b1;
r1 = (int) Math.random()*255;
g1 = (int) Math.random()*255;
b1 = (int) Math.random()*255;
 Color color = new Color(r1,g1,b1);
 //draw triangle

 g.setColor(color);
 g.drawLine(x,y,y2,y);
 g.setColor(color);
 g.drawLine(x,y,y2,y2);
 g.setColor(color);
 g.drawLine(y2,y,y2,y2);


}
}

和我的随机形状代码

import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;

/**
*
* @author huub
*/
abstract class RandomShape {    
/** color used for drawing this shape **/
protected Color color;  
/** position of the shape (upper left corner) **/
protected int x, y;  

abstract void draw(Graphics g);
}

但是,当我尝试编译时,它给出了一个错误,即 Tri 不是抽象的,并且不会覆盖 Randomshape 中的抽象方法绘制我该如何解决这个问题

4

3 回答 3

4

在抽象类中,您有一个名为 draw 的抽象方法。扩展抽象类的类应该重写这个方法。因此,在您的情况下,您应该在 Tri 类中实现 draw(Graphics g) 方法。否则,您必须将 Tri 类声明为抽象类。

希望这可以帮助。

于 2013-10-07T17:47:26.337 回答
3

您正在扩展一个具有抽象方法的类,因此要解决此错误,您应该(正确)覆盖子类中的 draw 方法或将子类声明为抽象类。

浏览此页面。

http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

http://chortle.ccsu.edu/java5/Notes/chap52/ch52_4.html

于 2013-10-07T17:48:11.367 回答
0
public class Tri extends RandomShape{

   void draw(Graphics g){ //You must implement this method
   }

}

或者

你需要让 Tri 类抽象

  public abstract class Tri extends RandomShape{

  }
于 2013-10-07T17:51:36.207 回答