鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)
上述原理详细解释:
- 首先,建立了一个抽象类
Drink
,它包含了抽象方法taste()
和常量KELE
、XUEBI
、HONGNIU
,分别代表可乐、雪碧和红牛这三种饮料的类型。 - 在抽象类中定义了静态方法
getDrink(int drinkType)
,根据传入的参数来获取对应的饮料对象。通过switch
语句判断传入的饮料类型,如果匹配到对应的类型,则实例化对应的子类对象并返回;如果没有匹配到对应的类型,则抛出自定义的异常DrinkNotFoundException
。 - 子类
Kele
、Xuebi
和HongNiu
继承自抽象类