在扩展构造函数类时,如何从类中调用构造函数?

时间:2012-10-12 20:43:07

标签: constructor

所以我遇到构造函数问题。我正在从我的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;
        }
    }

我做错了什么?

1 个答案:

答案 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编码约定。你需要了解它们。