抽象类覆盖错误

时间:2013-10-07 17:41:45

标签: java

你好了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中的抽象方法绘制我怎么能解决这个问题

3 个答案:

答案 0 :(得分:4)

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

希望这有帮助。

答案 1 :(得分:3)

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

浏览此页面。

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

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

答案 2 :(得分:0)

public class Tri extends RandomShape{

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

}

你需要让Tri类抽象

  public abstract class Tri extends RandomShape{

  }