객체가 처음부터 올바른 상태가 되게 합니다.
생성자는 클래스 이름과 같고 반환 타입이 없습니다. new가 호출할 때 필수 필드를 초기화하고 유효하지 않은 인수는 즉시 예외로 거부합니다.
생성자는 필드를 채우기 전에 title이 null이거나 공백뿐인지, lessons가 1보다 작은지 검사하고 해당하면 IllegalArgumentException을 던지므로 잘못된 Course는 아예 만들어지지 않습니다. title == null을 앞에 둔 덕분에 null일 때는 || 뒤의 title.trim()이 호출되지 않습니다. 두 필드는 final이라 생성자에서 한 번 대입한 뒤에는 바꿀 수 없습니다.
this(...)와 super(...) 생성자 호출은 첫 문장이어야 합니다. 중복 초기화는 주 생성자 하나로 모읍니다.
생성 후 setter를 여러 번 호출해야만 유효해지는 객체보다 한 번에 완성되는 객체가 안전합니다.
void를 붙이면 생성자가 아니라 일반 메서드가 되어 필드가 초기화되지 않습니다.
직접 바꿔보세요빈 제목을 거부하는 검증을 추가하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.