如何使程序在子类而不是父类中运行验证代码



正如标题所示,我想知道是否有一种方法可以让我的程序在子类的构造函数中执行验证代码,而不是在父类的构造函数里执行验证代码?这里有一个非常基本的例子:

这里我有我的教师类的构造函数,如果年龄<18

Teacher(String name, int age) throws InvalidAgeException {
this.name = name;
this.age = age;
if(age < 18){
throw new InvalidAgeException();
}
}
}

这里是构造函数&Student类的main方法,如果age>18,而不是因为年龄<18.

Student(String name, int age) throws InvalidAgeException{
super(name, age);
if(age > 18){
throw new InvalidAgeException();
}
}
public static void main (String[] args) throws InvalidAgeException {
try {
Teacher teacher = new Teacher("Matt Jones", 29);
Student student = new Student ("Liam Price", 16);
}catch(InvalidAgeException e){
System.out.println("Invalid age");
}
}
}

如何重新编写代码,以便根据创建的对象执行不同的验证检查?这是我在一些项目中发现的令人困惑的事情。

感谢

您的代码将检查子类中的两个验证,因为您使用的是super((方法。但是,具有矛盾的验证违反了良好设计的原则,因为子类可以应用于超类适用的任何地方。

您可以将验证作为另一种方法来编写,而不是在构造函数中编写验证。

相关内容

  • 没有找到相关文章

最新更新