你好了puzzeled后我创建了以下代码
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);
}
}
和我的randomshape代码
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中的抽象方法绘制我怎么能解决这个问题
答案 0 :(得分:4)
在抽象类中,您有一个名为draw的抽象方法。扩展抽象类的类应该重写此方法。所以在你的情况下你应该在Tri类中有draw(Graphics g)方法的实现。 否则你必须将Tri类声明为abstract。
希望这有帮助。
答案 1 :(得分:3)
您正在扩展一个具有抽象方法的类,以便解决此错误,您应该(正确地)覆盖子类中的draw方法或将子类声明为abstract。
浏览此页面。
http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html
答案 2 :(得分:0)
public class Tri extends RandomShape{
void draw(Graphics g){ //You must implement this method
}
}
或
你需要让Tri类抽象
public abstract class Tri extends RandomShape{
}