コメントは斎藤が修正・追加


//教科書 99ページ List7.1 Circle3.java 

import java.applet.Applet;
import java.awt.*;

class Circle3 {

    private int x;
    private int y;
    private int r;

    // コンストラクタ(構築子)その1
    public Circle3(int vx, int vy, int vr){
        x = vx;
        y = vy;
        r = vr;
    }

    // コンストラクタ(構築子)その2
    public Circle3(int vy){
        x = y = 0;
        r = vy;
    }

    // アクセスメソッド
    public int xPosition() { return x; }
    public int yPosition() { return y; }
    public int radius() { return r; }

    public void moveTo(int newX, int newY) {
        x = newX;
        y = newY;
    }

    public void draw(Graphics g) {
        g.drawOval(x-r, y-r, 2*r+1, 2*r+1);
    }
}

//教科書 100ページ List7.2 ColoredCircle.java

import java.awt.*;

class ColoredCircle extends Circle3 {

    private Color c;

    //コンストラクタ(構築子)その1 X,Y座標指定
    public ColoredCircle (int vx, int vy, int vr, Color vc){
        super (vx, vy, vr);          //親クラスのコンストラクタ(構築子)呼出し
        c = vc;
    }

    //コンストラクタ(構築子)その2 X,Y座標デフォルト使用
    public ColoredCircle (int vr, Color vc){
        super (vr);                  //親クラスのコンストラクタ(構築子)呼出し
        c = vc;
    }
       
    public void draw(Graphics g){
        Color currentColor = g.getColor();   //現在のペンの色を保存
        g.setColor(c);                         //ペンの色を設定
        super.draw(g);                         //親クラスのdrawを使い,円を描く
        g.setColor(currentColor);            //ペンの色を元に戻す
    }
}


// 教科書 104ページ List7.3 ColoredCircleTest.java

import java.applet.Applet;
import java.awt.*;

public class ColoredCircleTest extends Applet {
    public void paint(Graphics g){

        //3つの円を緑,青,赤で生成
        ColoredCircle a = new ColoredCircle(50,50,10,Color.green);
        ColoredCircle b = new ColoredCircle(50,50,20,Color.blue);
        ColoredCircle c = new ColoredCircle(50,50,30,Color.red);

        //3つの円を表示
        a.draw(g);
        b.draw(g);
        c.draw(g);
    }
}