필드 age가 있다고 치면, 자식 클래스에 age가 있으면 부모의 age는 접근 불가. 자식에 없으면 부모로 거슬러 올라가면서 age를 찾음. 메소드는 동적 바인딩이란 개념이 있지만 필드는 컴파일 타임에 접근할 필드가 결정됨
dto 추상화 전략 : https://potwings.tistory.com/58
service에서의 유효성 검증 로직 삭제 (ClientProductDto로 옮김)
기존의 ProductDto는 새로 만든 인터페이스의 이름으로 쓰기로 함 (service layer 수정 안해도 됨)
dto의 getter들을 인터페이스로 추상화. 구현체는 ClientProductDto와 AdminProductDto
카카오 문구 포함 유효성 검증은 이 중 ClientProductDto에서만 수행
ProductController에서는 post 요청의 body를 ClientProductDto형 매개변수에 바인딩
AdminController에서는 post 요청의 body를 AdminProductDto형 매개변수에 바인딩