如果给您一个名为 BouncyFace 的类,该类具有以下代码:
import javax.swing.*;
import java.awt.*;
public class BouncyFace extends JComponent {
protected int xDelta = 1;
protected int yDelta = 1;
private Color fleshColor;
public BouncyFace(int x, int y, int side) {
super();
setBounds(x, y, side, side);
fleshColor = new Color(214,157,106);
setBackground(fleshColor);
setForeground(Color.black);
}
public void paint(Graphics g) {
g.setColor( getBackground() );
g.fillOval(0, 0, getWidth()-1, getHeight()-1);
}
public void move() {
if (getParent() != null) {
setLocation( getX()+xDelta, getY()+yDelta );
if ((xDelta > 0) && (getX()+getWidth() > getParent().getWidth()) ) {
xDelta = -Math.abs(xDelta);
} else if ((xDelta < 0) && (getX() < 0)) {
xDelta = Math.abs(xDelta);
}
if ((yDelta > 0) && (getY()+getHeight() > getParent().getHeight()) ) {
yDelta = -Math.abs(yDelta);
} else if ((yDelta < 0) && (getY() < 0)) {
yDelta = Math.abs(yDelta);
}
repaint();
}
你被告知要创建一个更改paint() 的类,这样BouncyFace 不仅可以绘制一个椭圆,还可以在其中绘制两个小椭圆,你会怎么做呢?
编辑:
好的,所以这是我的新课程-
import javax.swing.*;
import java.awt.*;
public class Features extends BouncyFace
{
public Features(int x,int y, int side)
{
super(x,y,side);
//setBounds(x,y,side,side);
}
public void paint(Graphics g)
{
super.paint(g);
//g.setColor( getBackground() );
g.drawOval(10, 10, getWidth(), getHeight());
}
}
但是,我相信这会覆盖旧油漆,因为当我在 Driver 中执行此操作时,它只会向我显示新的椭圆形
私人特征眼睛;
眼睛=新功能(10,10,10);
这与我设置的参数有关吗?抱歉问了这么多,我只是想用多态性来理解继承,我完全被困在这里,认为没有必要开始一个新问题。
感谢您对这个问题的所有见解。我已经解决了它,现在正在解决另一个问题。感谢stackoverflow社区。