所以我遇到构造函数问题。我正在从我的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;
}
}
我做错了什么?
答案 0 :(得分: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编码约定。你需要了解它们。