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);
        }
    }

这是瓷砖类。

    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() 一个带有三个参数的构造函数。它调用Tile构造函数,该构造函数也有三个参数。

删除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 回答