建立一个java抽象类drink
时间: 2023-07-20 10:09:56 浏览: 59
好的,我可以为您创建一个Java抽象类Drink,如下所示:
```
public abstract class Drink {
// 定义抽象方法,用于获取饮料名称
public abstract String getName();
// 定义抽象方法,用于获取饮料的价格
public abstract double getPrice();
// 定义普通方法,用于展示饮料的信息
public void display() {
System.out.println("饮料名称:" + getName());
System.out.println("饮料价格:" + getPrice());
}
}
```
这个抽象类中包含两个抽象方法,分别用于获取饮料的名称和价格。同时也包含一个普通方法display,用于展示饮料的信息。由于这是一个抽象类,因此不能直接实例化,需要通过继承这个类来创建具体的饮料类。
相关问题
(1)建立一个Java抽象类Drink,应当: ①声明一个抽象方法taste(),该方法负责输出饮料的味道; ②声明int型常量来代表不同的饮料类型(咖啡、啤酒、牛奶),如: ③声明静态方法getDrink(int drinkType),根据传入的参数创建不同的饮料对象,并返回该对象,建议使用switch语句。 (2)建立Drink的子类: ①分别建立Drink的子类:Coffee(咖啡类),Beer(啤酒类),Milk(牛奶类); ②实现taste()方法,要求在控制台打印各自的味道特征。 (3)建立Test测试类,测试以上内容的正确性 ①编写main方法,输入要新建的饮料类型。 ②调用Drink类的getDrink方法,获得相应的饮料对象。然后调用该饮料对象的taste()方法,输出该饮料的味道。 ②编译程序,并运行。 要求:测试类放在包名为com.sy4.exe02.test包中,其它类放在com.sy4.exa02包中。
好的,你的问题是如何建立一个Java抽象类Drink及其子类,并编写测试类进行测试。
首先,我们建立一个抽象类Drink,代码如下:
```
package com.sy4.exa02;
public abstract class Drink {
public static final int COFFEE = 1;
public static final int BEER = 2;
public static final int MILK = 3;
public abstract void taste();
public static Drink getDrink(int drinkType) {
switch (drinkType) {
case COFFEE:
return new Coffee();
case BEER:
return new Beer();
case MILK:
return new Milk();
default:
throw new IllegalArgumentException("Invalid drink type.");
}
}
}
```
在这个抽象类中,我们声明了一个抽象方法taste(),该方法负责输出饮料的味道;声明int型常量来代表不同的饮料类型(咖啡、啤酒、牛奶);声明静态方法getDrink(int drinkType),根据传入的参数创建不同的饮料对象,并返回该对象,建议使用switch语句。
接下来,我们建立Drink的子类:Coffee(咖啡类),Beer(啤酒类),Milk(牛奶类),代码如下:
```
package com.sy4.exa02;
public class Coffee extends Drink {
public void taste() {
System.out.println("咖啡的味道:苦涩");
}
}
public class Beer extends Drink {
public void taste() {
System.out.println("啤酒的味道:酸爽");
}
}
public class Milk extends Drink {
public void taste() {
System.out.println("牛奶的味道:香甜");
}
}
```
在这些子类中,我们分别实现了taste()方法,要求在控制台打印各自的味道特征。
最后,我们建立Test测试类,测试以上内容的正确性,代码如下:
```
package com.sy4.exe02.test;
import com.sy4.exa02.Drink;
public class Test {
public static void main(String[] args) {
int drinkType = Drink.COFFEE;
Drink drink = Drink.getDrink(drinkType);
drink.taste();
drinkType = Drink.BEER;
drink = Drink.getDrink(drinkType);
drink.taste();
drinkType = Drink.MILK;
drink = Drink.getDrink(drinkType);
drink.taste();
}
}
```
在这个测试类中,我们首先输入要新建的饮料类型,然后调用Drink类的getDrink方法,获得相应的饮料对象。然后调用该饮料对象的taste()方法,输出该饮料的味道。
以上就是建立一个Java抽象类Drink及其子类,并编写测试类进行测试的全部过程。
继承多态综合练习1 (1)建立一个Java抽象类Drink,应当: ①声明一个抽象方法taste(),该方法负责输出饮料的味道; ②声明int型常量来代表不同的饮料类型(咖啡、啤酒、牛奶),如: ③声明静态方法getDrink(int drinkType),根据传入的参数创建不同的饮料对象,并返回该对象,建议使用switch语句。 (2)建立Drink的子类: ①分别建立Drink的子类:Coffee(咖啡类),Beer(啤酒类),Milk(牛奶类); ②实现taste()方法,要求在控制台打印各自的味道特征。 (3)建立Test测试类,测试以上内容的正确性 ①编写main方法,输入要新建的饮料类型。 ②调用Drink类的getDrink方法,获得相应的饮料对象。然后调用该饮料对象的taste()方法,输出该饮料的味道。 ②编译程序,并运行。 要求:测试类放在包名为com.sy4.exe02.test包中,其它类放在com.sy4.exa02包中。(知识点:类的定义,抽象类,继承,多态)
好的,以下是代码示例:
Drink.java
```
package com.sy4.exa02;
public abstract class Drink {
public static final int COFFEE = 1;
public static final int BEER = 2;
public static final int MILK = 3;
public abstract void taste();
public static Drink getDrink(int drinkType) {
switch (drinkType) {
case COFFEE:
return new Coffee();
case BEER:
return new Beer();
case MILK:
return new Milk();
default:
return null;
}
}
}
```
Coffee.java
```
package com.sy4.exa02;
public class Coffee extends Drink {
@Override
public void taste() {
System.out.println("咖啡有苦味,但也有淡淡的香气和甜味");
}
}
```
Beer.java
```
package com.sy4.exa02;
public class Beer extends Drink {
@Override
public void taste() {
System.out.println("啤酒有苦味和酸味,但也有淡淡的甜味和香气");
}
}
```
Milk.java
```
package com.sy4.exa02;
public class Milk extends Drink {
@Override
public void taste() {
System.out.println("牛奶有甜味和淡淡的香气,但没有苦味和酸味");
}
}
```
Test.java
```
package com.sy4.exe02.test;
import com.sy4.exa02.Drink;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要新建的饮料类型(1:咖啡,2:啤酒,3:牛奶):");
int drinkType = scanner.nextInt();
Drink drink = Drink.getDrink(drinkType);
if (drink != null) {
drink.taste();
} else {
System.out.println("不支持该类型的饮料!");
}
}
}
```
在这个练习中,我们定义了一个抽象类Drink,并声明了一个抽象方法taste()和三个常量来代表不同的饮料类型。然后,我们建立了三个Drink的子类:Coffee、Beer和Milk,并实现了taste()方法来输出各自的味道特征。最后,我们编写了一个Test测试类,从控制台输入饮料类型,调用Drink类的getDrink()方法来创建相应的饮料对象,并调用该饮料对象的taste()方法来输出该饮料的味道。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)