2014-08-27 83 views
-2

從我的代碼中,我希望我的臥室類能夠繼承超類 - 房間的長度和寬度。我已在填寫評論內各行的錯誤。 我得到的錯誤,我找不到我的出路。請幫幫我?繼承不起作用

package index; 

public class Room { 
int length; 
int breadth; 

Room(int x,int y) 
{ 
    length = x; 
    breadth = y; 
} 
int area(){ 
    return (length*breadth); 
} 
} 

class BedRoom extends Room{  //Implicit super constructor Room() is undefined for default constructor. Must define an explicit constructor 
    int height; 
    public void Bedroom(int x,int y,int z) 
    { 
     super(x,y); //Constructor call must be the first statement in a constructor 
     height=z; 
    } 


int volume(){ 
    return (length*breadth*height); 
    } 
} 
class InherTest 
{ 
    public static void main(String args[]) 
    { 
     BedRoom room1 = new BedRoom(14,12,10); //The constructor BedRoom(int, int, int) is undefined 
     int area1 = room1.area(); 
     int volume1 = room1.volume(); 
     System.out.println("Area1 = "+area1); 
     System.out.println("Volume1 = "+volume1); 
    } 

} 

回答

4

你的臥室類有一個僞構造不是真正的構造函數。構造函數不返回任何東西,不會void任何東西。擺脫那個無效的陳述。

變化

public void Bedroom(int x,int y,int z) 

public BedRoom(int x,int y,int z) // also capitalize correctly 
8

你只是拼錯BedRoom作爲構造函數聲明Bedroom。 (更正這將給你一個更簡單易懂的有關@HovercraftFullOfEels提到該問題的錯誤消息:構造函數沒有返回類型)

+0

1+我錯過了大寫位,你抓到了。 – 2014-08-27 14:29:07

+0

@HovercraftFullOfEels:和你一樣,爲了相反的原因:-) – 2014-08-27 14:29:38

+0

將「public void Bedroom(int x,int y,int z)...」改爲「public BedRoom(int x,int y,int z )...「。 – Francesco 2014-08-27 14:34:24

2
  • 建設者的名稱必須類的名稱相匹配,但由於Java是區分大小寫的Bedroom是不適合的BedRoom類構造有效的名稱。
  • 另外構造函數沒有返回類型,所以從中刪除void

換句話說更換

public void Bedroom(int x, int y, int z) { 
//  ^^^^ ^

public BedRoom(int x, int y, int z) { 
0

更改爲

public void BedRoom(int x,int y,int z) 

至於Java的臥室不一樣的寢室