构造器的基本架构
public class drawa {
private String name;
private double price;
//计数起始数字为0
private static int counter = 0;
public drawa() {
}
public drawa(String n, double p) {
name = n;
price = p;
//根据n得到counter的值
counter++;
}
//得到名字的方法
public String getName() {
return name;
}
//得到数据的方法
public double getPrice() {
return price;
}
// 设置名称和价格的方法
public void setName(String n) {
name = n;
}
public void setPrice(double p) {
price = p;
}
public String toString() {
return "Meal Name=" + name + ", Price=" + price + ", Calories=";
}
//
public static int getCount() {
return counter;
}
public static void main(String[] args) {
drawa dinner = new drawa("scampi", 5.49);
//名字为scampi,价格为5.49
System.out.println(dinner.toString());
System.out.println(drawa.getCount() + " meals have been created so far");
}
}
如果想要加上枚举,这里有两种方法
方法一
代码如下:
public class drawa {
enum Diet {
OMNIVOROUS, VEGAN, VEGETARIAN, UNSPECIFIED
};
//enum提供的选项
private String name;
private double price;
private static int counter = 0;
private Diet diet;
public drawa() {
}
public drawa(String n, double p, Diet d) {
name = n;
price = p;
diet = d;
counter++;
}
// get method declarations
public String getName() {
return name;
}
public double getPrice() {
return price;
}
public void setDiet(Diet d) {
diet = d;
}
public Diet getDiet() {
return diet;
}
// set method declarations
public void setName(String n) {
name = n;
}
public void setPrice(double p) {
price = p;
}
public String toString() {
return "Meal Name=" + name + ", Price=" + price + ", " + " and Diet=" + diet;
}
//
public static int getCount() {
return counter;
}
public static void main(String[] args) {
drawa dinner = new drawa("Special Pizza", 8.99, Diet.VEGETARIAN);
System.out.println(dinner.toString());
}
}
运行后的结果是这样的:
Meal Name=Special Pizza, Price=8.99, and Diet=VEGETARIAN
如果是在new drawa没写 Diet.VEGETARIAN,那么最后的结果就是:
Meal Name=Special Pizza, Price=8.99, and Diet=null
类应该有一个toString方法
•枚举是一种类
•枚举可以有自己的toString方法
方法二
public class drawa {
enum Diet {
OMNIVOROUS, VEGAN, VEGETARIAN, UNSPECIFIED
};
private String name;
private double price;
private static int counter = 0;
//
private Diet diet;
public drawa() {
}
public drawa(String n, double p, Diet d) {
name = n;
price = p;
diet = d;
counter++;
}
// get method declarations
public String getName() {
return name;
}
public double getPrice() {
return price;
}
public void setDiet(Diet d) {
diet = d;
}
public Diet getDiet() {
return diet;
}
// set method declarations
public void setName(String n) {
name = n;
}
public void setPrice(double p) {
price = p;
}
public String toString() {
String priceAndCalories = ", Price=" + price + ", ";
if (diet == null)
return name + priceAndCalories;
else
return name + priceAndCalories + " which is suitable for " + diet;
}
//
public static int getCount() {
return counter;
}
public static void main(String[] args) {
System.out.println(
new drawa("Tomato Pizza", 8.99, Diet.VEGAN));
}
}
主要改变的是tostring和main部分
以上两种方法都是直接给出需要的枚举选项,如果想要输出识别得到的选项,则需要:
m.setDiet(
Diet.valueOf(
keyboard.readString().toUpperCase()));
并且用开关来创建一个枚举方法
public enum Diet {
OMNIVOROUS, VEGAN, VEGETARIAN;
public String toString() {…}
public static Diet called(String s) {
if ( s != null )
switch (s.toUpperCase()) {
case “OMNIVOROUS” :
return OMNIVOROUS;
case “VEGAN” :
return VEGAN;
case “VEGETARIAN” :
return VEGETARIAN;
default : return null;
}
return null;
}
}