-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 で抽象メソッド draw をオーバーライドしないというエラーが表示されます。これを修正するにはどうすればよいですか

4

3 に答える 3

4

抽象クラスには、draw という抽象メソッドがあります。抽象クラスを拡張するクラスは、このメソッドをオーバーライドする必要があります。したがって、あなたの場合、 Tri クラス内に draw(Graphics g) メソッドの実装が必要です。それ以外の場合は、Tri クラスを抽象として宣言する必要があります。

お役に立てれば。

于 2013-10-07T17:47:26.337 に答える
3

抽象メソッドを持つクラスを拡張しているため、このエラーを解決するには、子クラスの描画メソッドを (正しく) オーバーライドするか、子クラスを抽象として宣言する必要があります。

このページを通過します。

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 に答える