2012-10-12 203 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

相關問題