我有这样的课程:
abstract class Person{void toDrink(Liquid l);}
class Liquid{}
class Alcohol extend Liquid{}
class Milk extends Liquid{}
class Adult extends Person{void toDrink(Liquid l){}}
class Child extends Person{void toDrink(Liquid l){}}
我希望 Child 和 Adult 不要分别将 Liquid 作为 args 而是 Milk 和 Alcohol,但我必须用完全 Liquid 参数覆盖抽象方法。所以当我写
Person child = new Child();
child.toDrink(new Alcohol());
孩子可以把酒精作为喝酒的理由。我可以使用 Exceptions 或 if() 来解决这个问题,但我请你建议我为这些关系设计一个更好的设计。当我将错误的参数传递给 toDrink() 方法(给孩子喝酒精或给成人喝牛奶)时,我想要它,当我尝试运行它时,我的 IDE 将它强调为错误和编译错误。