如何使用toString和getter以及setter方法

new*_*ser 3 java string overriding

我按照以下说明骑着斗巴.我无法弄清楚如何使用toString()方法来打印我的数据值.我也不知道如何将颜色打印成字符串来表示"黑色"或"蓝色".我无法弄清楚如何使用布尔值来表示"已连接"或"已断开连接".

创建一个名为HeadPhone的Java类来表示耳机集.该课程包含:

•三个常量,分别为LOW,MEDIUM和HIGH,值为1,2和3,表示耳机音量.

•名为volume的私有int数据字段,用于指定耳机的音量.默认音量为MEDIUM.

•名为pluggedIn的私有布尔数据字段,用于指定是否插入耳机.默认值为false.

•名为manufacturer的私有字符串数据字段,用于指定耳机制造商的名称.

•名为headPhoneColor的私有颜色数据字段,用于指定耳机的颜色.

•所有数据字段的getter和setter方法.

•无参数构造函数,用于创建默认耳机.

•名为toString()的方法,返回描述耳机当前字段值的字符串.

•名为changeVolume(value)的方法,用于将耳机的音量更改为传递给方法的值

创建一个构造至少3个HeadPhone对象的TestHeadPhone类.

public class TestHeadPhone {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // construct an object
        HeadPhone headPhone = new HeadPhone();

        System.out.println("Manufacturer: " + headPhone.getManufacturer());
        System.out.println("Color: " + headPhone.getColor());
        System.out.println("Currently: " + headPhone.getStatus());
        System.out.println("Volume: " + headPhone.getVolume());
        if(headPhone.getStatus() == false){
            System.out.println("Please plug the Head Phones into a device.");   
        }

        headPhone.setNewHeadphone();

        System.out.println("\n" + "Manufacturer: " + 
            headPhone.getManufacturer());
        System.out.println("Color: " + headPhone.getColor());
        System.out.println("Currently: " + headPhone.getStatus());
        System.out.println("Volume: " + headPhone.getVolume());
        if(headPhone.getStatus() == true){
            System.out.println("Currently playing classical music.");   
        }

    }

}

package testheadphone;
// import color class
import java.awt.Color;

/**
 *
 * @author 
 */
public class HeadPhone {
    // class variables
    private static final int LOW = 1;
    private static final int MEDIUM = 2;
    private static final int HIGH = 3;
    private int volume = MEDIUM;
    private boolean pluggedIn = false;
    private String manufacturer;
    private Color headPhoneColor;

    //default constructor method
    public HeadPhone(){
        this.manufacturer = "Bose";
        this.headPhoneColor = Color.black;
        this.volume = MEDIUM;
        this.pluggedIn = false;       
    } // end default constructor
    // getter method
    public String getManufacturer(){
        return manufacturer;
    }
    // getter method
    public Color getColor(){
        return headPhoneColor;
    }
    // getter method
    public int getVolume(){
        return volume;
    }
    // getter method
    public boolean getStatus(){
        return pluggedIn;
    }   

    public int changeVolume(int change){
        volume = change;
        return volume;
    }
    // setter method
    public void setNewHeadphone(){
        manufacturer = "JVC";
        headPhoneColor = Color.blue;
        pluggedIn = true;
        volume = HIGH;
    }

  //  @Override
  //  public String toString(){
  //      return "Head Phone 1 has the folllowing parameters: " + "\n" + 
  //              "Manufacturer: " + this.manufacturer + "\n" + "Color: Black" + 
  //              "\n" + "Volume is set to: " + this.volume + "\n" + 
  //              "Currently: disconnected" + "\n" + "Please plug the Head Phone"
  //              + " into a device"; 
  //  }

}
Run Code Online (Sandbox Code Playgroud)

我的输出: 制造商:Bose颜色:java.awt.Color [r = 0,g = 0,b = 0]目前:false体积:2请将Head Phones插入设备.

制造商:JVC颜色:java.awt.Color [r = 0,g = 0,b = 255]目前:true音量:3目前正在播放古典音乐.

所需输出: 制造商:Bose颜色:黑色当前:已断开连接音量设置为:MEDIUM请将Head Phones插入设备.

Head Phone 2具有以下参数:制造商:JVC颜色:蓝色当前:已连接音量设置为:LOW当前正在播放古典音乐播放列表

Lin*_*ong 5

您可以覆盖toString()要打印的对象的方法.但是,有些对象已经toString()以人类可读的格式为您实现了它们的方法.即Color班级.

    ...
    System.out.println("Color: " + headPhone.getColor().toString());
    ...
Run Code Online (Sandbox Code Playgroud)

另一方面,您可以自由指定String通过覆盖将对象显示为什么格式.(除非对可以/不可修改的内容有类限制,即final关键字.)