シンボルを見つけられません
javaについて勉強しているのですが、円の中に四角を作るというプログラムを作ろうとしたところ
tes.java:43:シンボルを見つけられません。
シンボル:メソッド drawSquare(int,int,int,java.awt.Graphics)
場所:Assortのクラス
a.drawSquare(x,y,w,g);
^
というエラーが出てコンパイルできません。drawCircleからdrawSquareを実行するようにしたいのですが、どうしたらよいか教えていただけないでしょうか。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class tes {
static MyCanvas mc;
public static void main(String[] args) {
tes ac_listener = new tes();
JFrame jf = new JFrame("tes");
JPanel p = new JPanel();
mc = new MyCanvas();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mc.setPreferredSize(new Dimension(700,700));
jf.getContentPane().add(mc);
p.add(mc);
jf.getContentPane().add(p);
jf.pack();
jf.setVisible(true);
}
}
abstract class Assort{
double x,y;
}
class Square extends Assort{
public void drawSquare(int x, int y, int w, Graphics g) {
double k=Math.sqrt(2);
double _w=w/2/k;
g.drawRect(x-(int)_w/2, y-(int)_w/2, (int)_w, (int)_w);
}
}
abstract class Circle extends Assort{
}
class Circle1 extends Circle {
Assort a;
Circle1(Assort _a) {
a = _a;
}
void drawCircle(int x, int y, int w, Graphics g){
g.drawOval(x-w/4,y-w/4,w/2,w/2);
a.drawSquare(x,y,w,g);
}
}
class MyCanvas extends JPanel {
public void paintComponent( Graphics g ) {
super.paintComponent(g);
Circle1 d1 = new Circle1 ( new Square() );
d1.drawCircle(350,350,700,g);
}
}
補足
Java初心者なもので、よくわかりませんが、例えば、 public class Sample extends JFrame{ public static void main(String[] args){ // JFrame jf = new Sample(); *1 // JFrame jf = new JFrame(); *2 } } *1のとき、出力結果が枠のみで *2のとき、枠とパネルのようなものが出力されるのですが、 なぜ、そのような結果になるのでしょうか。