1

だから私はコンストラクターに問題があります。Tile クラスから Square クラスにコンストラクターを呼び出していますが、コンストラクターにはおそらくパラメーターがありません。

    import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.*;
    import java.io.*;
    import javax.imageio.*;
    import javax.swing.*;

    public class Square extends Tile
    {
        static BufferedImage square = null;

        public void Square()
        {
            try
            {
               square = ImageIO.read(new File("BlueSquare.png"));
            }
            catch (IOException e){}
        }

        public Square(int dVal, boolean walk, BufferedImage image)
        {
            super(1, true, square);
        }
    }

これがTileクラスです。

    import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.*;
    import java.io.*;
    import javax.imageio.*;
    import javax.swing.*;

    public class Tile
    {
        static int dataVal;
        static boolean walkable;
        static BufferedImage img;

        public void Tile (int dVal, boolean walk, BufferedImage image)
        {
            dataVal = dVal;
            walkable = walk;
            img = image;
        }

        public static int getValue()
        {
            return dataVal;
        }

        public static boolean getWalk()
        {
            return walkable;
        }

        public static BufferedImage getImage()
        {
            return img;
        }
    }

私は何を間違っていますか?

4

1 に答える 1

1

public void Square()コンストラクターではありません。これは、ひどい命名規則を持つメソッドにすぎません。

public Square() 3 つの引数を持つコンストラクタです。これはTileコンストラクターを呼び出しますが、これにも 3 つの引数があります。

以下を削除しvoidます。

public void Tile (int dVal, boolean walk, BufferedImage image)

次のようにする必要があります。

public Tile (int dVal, boolean walk, BufferedImage image)

あなたのメソッド名は凶悪です。あなたが混乱しているのも不思議ではありません。これらのメソッド名を小文字で始まり、クラス名を使用しない名前に変更します (例: "createSquareImage")。

Sun Java コーディング規約を読んでください。それらを知る必要があります。

于 2012-10-12T20:45:29.187 に答える