基本问题-设置对象';s traits,并在test/helper类-Java中调用该方法

基本问题-设置对象';s traits,并在test/helper类-Java中调用该方法,java,oop,methods,getter,setter,Java,Oop,Methods,Getter,Setter,我正在用Java学习非常基本的面向对象编程,我有一个名为triangle1的三角形对象,我在助手类中设置它的值,但是,我想在我的主类中使用setter和getter来更改triangle1的值。我只是对如何调用该方法来显示更新的值感到困惑 这是我的主要类,在这里我创建了我的三角形对象。正是在这一点下,我试图获取这些值,并将它们更改为15.5、15.5、15.5和绿色。我意识到我可能做错了 public class Triangle extends codeAssignHelper{ p

我正在用Java学习非常基本的面向对象编程,我有一个名为triangle1的三角形对象,我在助手类中设置它的值,但是,我想在我的主类中使用setter和getter来更改triangle1的值。我只是对如何调用该方法来显示更新的值感到困惑

这是我的主要类,在这里我创建了我的三角形对象。正是在这一点下,我试图获取这些值,并将它们更改为15.5、15.5、15.5和绿色。我意识到我可能做错了

public class Triangle extends codeAssignHelper{

    public double base;
    public double side1;
    public double side2;
    public String colour;


    Triangle(double base, double side1, double side2, String colour){
        this.base = base;
        this.side1 = side1;
        this.side2 = side2;
        this.colour = colour;
    }

    public void setBase(double base){
        this.base = 15.5;
    }

    public void setSide1(double side1){
        this.side1 = 15.5;
    }

    public void setSide2(double side2){
        this.side2 = 15.5;
    }

    public void setColour(String colour){
        this.colour = "green";
    }


    public double getBase(){
        return this.base;
    }
    public double getSide1(){
        return this.side1;
    }
    public double getSide2(){
        return this.side2;
    }
    public String getColour(){
        return this.colour;
    }


    public static void main(String[] args){


    }
}
这是我的助手类,我已经打印了triangle1和triangle2,我只想重新打印triangle1的值,但已更新。我意识到我可能不理解我想特别更新triangle1

classcodesignhelper{
公共静态void main(字符串[]args){
三角形三角形1=新三角形(1.0,1.0,1.0,“黑色”);
三角形三角形2=新三角形(3.0,4.0,5.0,“红色”);
System.out.println(“欢迎使用三角形测试仪!”);
System.out.println(“--------------------------------------------------------------”);
println(“这个程序将实例化三角形的对象,并测试三角形类的所有方法。”);
System.out.println(“--------------------------------------------------------------”);
System.out.println(“对于三角形1,基底的长度为:“+triangle1.base”);
System.out.println(“对于三角形1,第1边的长度为:“+triangle1.side1”);
System.out.println(“对于三角形1,第2边的长度为:“+triangle1.side2”);
System.out.println(“对于三角形1,颜色为:“+triangle1.color+”\n”);
System.out.println(“三角形2:”);
System.out.println(“Base:+triangle2.Base”);
System.out.println(“Side1:+triangle2.Side1”);
System.out.println(“Side2:+triangle2.Side2”);
System.out.println(“颜色:+triangle2.color+”\n”);
//我的问题-需要在此处更新三角形1的值
System.out.println(“在三角形1上测试setter方法”);
System.out.println(“三角形1:”);
System.out.println(“Base:+triangle1.getBase());
System.out.println(“Side1:+triangle2.getSide1());
System.out.println(“Side2:+triangle2.getSide2());
System.out.println(“color:+triangle2.getcolor()+”\n”);
}
}
预期产出: 欢迎使用三角形测试仪


这个程序将实例化三角形的对象,并测试三角形类的所有方法


对于三角形1,基底的长度为:1.0 对于三角形1,边1的长度为:1.0 对于三角形1,边2的长度为:1.0 对于三角形1,颜色为:黑色

三角形2: 基数:3.0 第1部分:4.0 第二部分:5.0 颜色:红色

在三角形1上测试setter方法。 三角形1: 基数:15.5 第1部分:15.5 第2部分:15.5
颜色:绿色

您只需像这样调用setter,然后再使用getter打印值:

triangle1.setBase(15.5);
triangle1.setBase(15.5);
triangle1.setSide2(15.5);
triangle1.setColour("green");
我看到您已经硬编码了setter,以设置特定的值并忽略参数。也许这只是为了测试,但应该是这样的:

public void setBase(double base){
        this.base = base;
    }
private double base;
private double side1;
private double side2;
private String colour;
public void setBase(double base) {
    this.base = base;
}

public void setSide1(double side1) {
    this.side1 = side1;
}

public void setSide2(double side2) {
    this.side2 = side2;
}

public void setColour(String colour) {
    this.colour = colour;
}
当然,其他二传手也是如此

最后,类的数据元素应该是私有的,这就是您首先实现setter和getter的原因,因此只有来自对象自己的类的方法才能处理其元素的值。 所以像这样:

public void setBase(double base){
        this.base = base;
    }
private double base;
private double side1;
private double side2;
private String colour;
public void setBase(double base) {
    this.base = base;
}

public void setSide1(double side1) {
    this.side1 = side1;
}

public void setSide2(double side2) {
    this.side2 = side2;
}

public void setColour(String colour) {
    this.colour = colour;
}

setter方法不应硬编码,而是应如下所示:

public void setBase(double base){
        this.base = base;
    }
private double base;
private double side1;
private double side2;
private String colour;
public void setBase(double base) {
    this.base = base;
}

public void setSide1(double side1) {
    this.side1 = side1;
}

public void setSide2(double side2) {
    this.side2 = side2;
}

public void setColour(String colour) {
    this.colour = colour;
}
然后,在codeAssignHelper类的main方法中,调用setter,如下所示:

// MY PROBLEM - Need to update triangle1's values here
System.out.println("Testing setter methods on triangle1.");
        
triangle1.setBase(15.5);
triangle1.setSide1(15.5);
triangle1.setSide2(15.5);
triangle1.setColour("green");
        
System.out.println("Triangle1:");
System.out.println("Base:       " + triangle1.getBase());
System.out.println("Side1:      " + triangle1.getSide1());
System.out.println("Side2:      " + triangle1.getSide2());
System.out.println("Colour:     " + triangle1.getColour() + "\n");
我相信这将为您提供以下所需的输出:

Testing setter methods on triangle1.
Triangle1:
Base:       15.5
Side1:      15.5
Side2:      15.5
Colour:     green

您错误地使用引号而不是反勾号来格式化代码段。我试图修复您的格式,但您应该验证。虚线被堆栈溢出解析为分隔线。为了模拟控制台上的输出,我建议在单词
none
上使用三个回勾,然后使用三个回勾。太棒了,是的,我必须硬编码,基本上,我必须使用这些方法来进行更新,如果我能做第一个选项的话,你说的肯定会容易得多。实际上,但是,如何调用新的集合值?在helper类中?如果我这样做:System.out.println(“Base:+triangle1.getBase());,它只给了我triangle1 baseYes,您可以在codeAssignHelper类的main方法中调用setter。例如,在System.out.println(“在三角形1上测试setter方法”);和System.out.println(“三角形1:”);