2013-10-07 3 views
-3

Здравствуйте после 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 является не абстрактно и не переопределяет абстрактный метод draw in Randomshape, как я мог исправить это

+0

Вы знаете, что 'abstract' средства в контексте методов и классы? –

+2

_how я мог бы исправить это_ Ошибка ясна. Переопределите метод 'draw' в классе' Tri'. – BackSlash

+1

Сообщение об ошибке сообщает вам ** точно ** что случилось. Время взломать учебник и прочитать на абстрактных классах! –

ответ

4

В абстрактном классе у вас есть абстрактный метод, называемый draw. Класс, который расширяет абстрактный класс, должен переопределить этот метод. Поэтому в вашем случае у вас должна быть реализация метода draw (Graphics g) внутри Tri-класса. В противном случае вам нужно объявить три класса абстрактными.

Надеюсь, это поможет.

3

Вы расширяете класс, который имеет абстрактный метод, поэтому для устранения этой ошибки вы должны (правильно) переопределить метод draw в дочернем классе или объявить дочерний класс абстрактным.

просмотрите эту страницу.

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

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

0
public class Tri extends RandomShape{ 

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

} 

или

Вам нужно сделать класс Tri абстрагироваться

public abstract class Tri extends RandomShape{ 

    } 
Смежные вопросы