设置和获取方法

时间:2018-11-30 19:53:36

标签: java methods get set

我在这里学习Java!

我很难理解如何设置和获取方法。我正在单独编写教科书 Java编程,第9版中的一个问题,请执行以下操作:

“创建一个名为Sandwich的类。数据字段包括主要成分(例如 tuna )的String,面包类型的String(例如 wheat ),价格为double(例如4.99)。包括获取和设置每个字段的值的方法。”

然后它要求我这样做:

“创建一个名为TestSandwich的应用程序,该应用程序实例化一个Sandwich对象并演示set和get方法的使用。”

因此,对于第一部分,我使用以下代码制作了一个.java文件:

public class Sandwich {
private String ingredient;
private String bread;
private double price;

public Sandwich(String ing, String bre, double pri) {
    ingredient = ing;
    bread = bre;
    price = pri;
}

public void setIngredient(String ing) {
    this.ingredient = ing;
}

public String getIngredient() {
    return ingredient;
}
public String getBread() {
    return bread;
}
public Double getPrice() {
    return price;
}
}

第二部分,我做了以下事情:

import java.util.Scanner;
public class TestSandwich {
public static void main(String[] args) {
    String Ingredient;
    String Bread;
    Double Price;
    Scanner keyboard = new Scanner(System.in);

    System.out.println("MAKE A SANDWICH");
    System.out.println("Enter an ingredient:  ");
    Ingredient = keyboard.nextLine();
    System.out.println("Enter bread:  ");
    Bread = keyboard.nextLine();
    System.out.println("Enter a price");
    Price = keyboard.nextDouble();

    Sandwich obj = new Sandwich(Ingredient, Bread, Price);

    System.out.println("The ingredient is " + obj.getIngredient());
    System.out.println("The bread is " + obj.getBread());
    System.out.println("The price is " + obj.getPrice());       
}
}

我完成了此操作,并且效果很好,但是我意识到我没有创建任何set方法。有人可以根据指示向我解释更好的方法吗?我敢肯定这种方式可行,但是我希望通过本书来做,并且能够更好地理解它。我不确定从哪里开始创建set方法。请告诉我。非常感谢!

PS:这不是功课,我只是想更好地理解这一点。

-标记

3 个答案:

答案 0 :(得分:3)

在这里创建具有这些值的对象

Sandwich obj = new Sandwich(Ingredient, Bread, Price);

在这里创建一个空对象,然后设置值

Sandwich obj = new Sandwich();
obj.setIngredient(Ingredient);
obj.setBread(Bread);
obj.setPrice(Price);

答案 1 :(得分:2)

在名为 Sandwich 的类中考虑以下代码:

public Sandwich(String ing, String bre, double pri) {
ingredient = ing;
bread = bre;
price = pri;
}

这称为构造函数,这是一种特殊的方法,与类的名称相同。但是它不返回值。该构造函数接受三个参数,其中两个是字符串,一个是双精度值。在构造函数主体中,您实际上是在设置作为参数传递给构造函数的值,因此您可以将其视为同时设置三个值的setter方法。

现在在同一个类中考虑以下代码:

public void setIngredient(String ing) {
this.ingredient = ing;
}

此方法是设置方法,仅设置一个值,即成分。您还可以创建其他设置方法,并以此命名您想要的任何名称。例如,Sandwich类中的setBread和setPrice方法如下:

public setBread(String bre) {
bread = bre;
}
public setPrice(double pri) {
price = pri;
}

您可以使用构造函数来设置值,也可以使用“设置方法”(这是用于接受和设置值的普通方法)。您可以使用一个方法一次性设置所有值,这是构造函数正在做的事情,也可以使用单个方法来设置每个值,例如我们定义的setter方法。

如果您使用单个方法一次设置所有值(在这种情况下为构造器,则为 ),那么在实例化Sandwich类时,您需要一次将所有值传递给构造器就像您这样做:

Sandwich obj = new Sandwich(Ingredient, Bread, Price);

如果不按正确的顺序一次将三个变量传递给构造函数,则会发生编译错误。由于您已经有一个设置三个值的构造函数,因此其他的setter方法没什么用,除非您随后需要更改这些值。我希望这会有所帮助。

答案 2 :(得分:1)

简单的样子:

System.out.println("Enter another price");
double newPrice = keyboard.nextDouble();
obj.setPrice(newPrice);

并在该调用之前/之后打印obj(当然,在该类上@Overwrite toString()以获得有意义的输出)。