CodeHS的服装店课程

时间:2016-10-31 10:55:58

标签: java constructor

所以我目前正在上课,我的学校称为Ap Computer Science in Java(Mocha)。我被困在舞台4.12.4上。这是练习

在这个问题中,你将设计一些代表服装店不同服装的类。

你将为TShirt,Jeans,Sweatshirt和Clothing编写课程。

服装类应该有两个实例变量:一个用于服装的大小(一个字符串),另一个用于服装的颜色(也是一个字符串)。

服装也应该有两个访问者(getter方法):

public String getSize()
public String getColor()

Sweatshirt类应该有一个私有实例变量(或字段)来存储它是否有引擎盖,以及相应的getter方法

public boolean hasHood()

TShirt类应该有一个私有字段来存储结构,以及一个名为

的相应的getter
public String getFabric()

所有牛仔裤都应该是蓝色。

构造函数应采用以下格式:

public Clothing(String size, String color)
public TShirt(String size, String color, String fabric)
public Sweatshirt(String size, String color, boolean hasHood)
public Jeans(String size)

这是我的代码。

TShirt.java:

public class TShirt extends Clothing
{
private String size;
private String color;
private String fabric;


public TShirt(String Size, String Color, String Fabric)
{
    size = Size;
    color = Color;
    fabric = Fabric;
}


public String fabric()
{
    return this.fabric;
}

}

Jeans.java:

public class Jeans extends Clothing
{
private String size;
private String color = "blue";

public Jeans(String Size)
{
   size = Size;
}



public String getColor()
{
    return this.color;
}
}

Sweatshirt.java:

public class Sweatshirt extends Clothing
{
private String size;
private String color;
private boolean hasHood;

public Sweatshirt(String Size, String Color, boolean HasHood)
{
    //super(Clothing);
    size = Size;
    color = Color;
    hasHood = HasHood;

}


public boolean hasHood()
{
    return this.hasHood;
}
}

Clothing.java:

public abstract class Clothing
{
private String size;
private String color;
private String fabric;

public Clothing(String Size, String Color)
{
    this.size = size;
    this.color = color;
}

public String getSize()
{
    return this.size;
}

public String getColor()
{
    return this.color;
}

public String getFabric()
{
    return this.fabric;
}

}

这是我运行程序时得到的错误列表

root/TShirt.java:9: error: constructor Clothing in class Clothing cannot be applied to given types;
{
^
required: String,String
found: no arguments
reason: actual and formal argument lists differ in length
root/Jeans.java:7: error: constructor Clothing in class Clothing cannot be applied to given types;
{
^
required: String,String
found: no arguments
reason: actual and formal argument lists differ in length
root/Sweatshirt.java:8: error: constructor Clothing in class Clothing cannot be applied to given types;
{
^
required: String,String
found: no arguments
reason: actual and formal argument lists differ in length
3 errors
Error: Could not find or load main class ClothingTester

我不知道我做错了什么,所以请任何人帮助我,我已经坚持了几天了。

2 个答案:

答案 0 :(得分:2)

扩展Clothing类的类似乎抛出了错误。一个来自TShirt(我没有看到代码),另一个来自Jeans,另一个来自Sweatshirt(两次发布的代码)。

每当扩展一个Class时,如果你没有立即初始化继承的Class的构造函数,编译器会抱怨。在显示的所有扩展类中,都没有这样做。因此,为了帮助您入门,我提供了一个初始化super构造函数的运动衫类,或者在每次创建运动衫对象时初始化Clothing。在这种情况下,superClothing。此外,由于您从Clothing类扩展,因此无需在扩展类中重新定义“大小”和“颜色”属性。

使用具有相同名称但“Case”不同的不同变量时也要小心,例如。查看您提供的代码,查看Clothing类构造函数。您输入的值:尺寸和颜色未被使用。它应该是this.size = Size和this.color = Color。由于您使用类自己的变量来设置自己,我很确定您会收到错误或者根本没有得到正确的值。我不建议命名仅在Case中不同的不同变量。

public class Sweatshirt extends Clothing
{
   //private String size;
   //private String color;
   private boolean hasHood;

   public Sweatshirt(String inSize, String inColor, boolean inHasHood)
   {
     super(inSize, inColor);
     //super(Clothing);
     //size = Size;
     //color = Color;
     hasHood = inHasHood;  
   }

   public boolean getHasHood()
   {
     return this.hasHood;
   }

   @Override
   public String toString()
   {
     return "Sweatshirt [hasHood=" + getHasHood() + ", getSize()=" + getSize() + ", getColor()=" + getColor() + "]";
   }

 }

希望这有助于您开始使用。

答案 1 :(得分:1)

这就是我所做的:

SweatShirt

public class Sweatshirt extends Clothing
{

    private boolean hood;

    public Sweatshirt(String size, String color, boolean hood)
    {
        super (size,color);
        this.hood=hood;
    }

    public boolean hasHood()
    {
        return this.hood;
    }
}

牛仔裤

public class Jeans extends Clothing
{ 
    public Jeans(String size)
    {
       super(size,"blue");
    }
}

T恤

public class TShirt extends Clothing
{
    private String fabric;

    public TShirt(String size, String color, String fabric)
    {
        super(size,color);
        this.fabric=fabric;
    }

    public String getFabric()
    {
        return this.fabric;
    }

服装

public class Clothing
{
    // all instance variables should be private
    private String size;
    private String color;
    // private int x;

    // default constructor
    /* 
    public Clothing ()
    {
        // intialize all instance variables
        size="";
        color="";
        x=0;
    }
    */
    // only intialize when the parameter is empty or zero argument

    public Clothing(String size, String color)
    {
        this.size=size;
        this.color=color;
        // this.x=0;

        // always initialize all the instance variables
        //even though the parameters are incomplete
    }


    public String getSize()
    {
        return this.size;
    }
    public String getColor()
    {
        return this.color;
    }

}

你可能已经完成了这件事,但以防万一。