Как запретить использовать неверно инициализированный объект в java

Допустим, есть такие классы:

class Parent {
    int p1, p2;
    public Parent(int p1, int p2){
        this.p1 = p1;
        this.p2 = p2;
    }

    public void printVars(){
        System.out.printf("%d %d", p1, p2);
    }
}

class Child extends Parent{
    public Child(int p1, int p2){
        super(p1, p2);
    }
}

Но мне нужно, чтобы в случаях, когда p1 > p2 нельзя было пользоваться созданным объектом класса Child.
Т.е. при попытке сделать так:

public class Main {

    public static void main(String[] args) {

        Child child = new Child(2, 1);
        child.printVars();
    }
}

выдать ошибку, например.
Как это сделать ?


Ответы (1 шт):

Автор решения: oQaris

Обычно в таких случаях добавляют проверку в конструктор класса:

class Child extends Parent {
        public Child(int p1, int p2) {
            super(p1, p2);
            if(p1 > p2)
                throw new IllegalArgumentException("p1 was greater than p2");
        }
    }
→ Ссылка