2012-10-12 98 views
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; 
     } 
    } 

我在做什么错?

回答

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

+0

感谢您的帮助。我修复了命名,照片现在好了。 – Superdecoy75

相关问题