2014-08-27 71 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的卧室不一样的寝室