본문 바로가기
BackEnd/JAVA

[JAVA] [오류] declares multiple JSON fields named / Extends

by 성은2 2021. 5. 27.

 

declares multiple JSON fields named 변수이름

-> vo 에 똑같은 이름의 변수가 중복되어 있다는 오류.

 

 

 

 

 

두 눈 씻고봐도 VO에 중복된 변수를 선언한적 없다?

그러면 확인해야 할 부분은 *extends 한 부분.

 

 

 

* extends란? 

자바(JAVA)의 상속(extends)

참조링크 : https://commin.tistory.com/101

  • 부모 클래스(parent class) 와 자식 클래스(children class)는 자바 지정예약어 extends에 의하여 정해집니다.
  • 하나의 부모 클래스(parent class)는 여러개의 자식 클래스(children)을 가질 수 있습니다.
  • 반대로 하나의 클래스는 여러개의 클래스로부터 상속을 받을수는 없습니다.
  • 부모 클래스(parent class)로부터 상속받은 자식 클래스는 부모 클래스의 자원(source) 모두를 사용 할 수 있습니다.
  • 반대로 부모클래스는 자식클래스의 자원을 가져다 쓸 수는 없습니다.
  • 자식클래스는 또다른 클래스의 부모 클래스가 될 수 있습니다. 
  • 자식클래스는 부모클래스로부터 물려받은 자원을 override 하여 수정해서 사용 할 수 있습니다.
  • 부모클래스가 상속받은 자원도 자식클래스가 사용 가능합니다.

 

 

 

 

해설

 

소스에서 공통으로 사용될 변수( ex : year)  를 모아둔 BaseKeyVO 같은 Class를 만들었다.

(부모 클래스를 만들어 extends하지 않았다면 그냥 오류가 난 파일에 중복된 변수가 없는지 체크해 보면 문제해결. )

그리고, 그 VO를 extends한 순간 해당 클래스에 있는 변수를 모두 사용하겠다는것과 동일한 의미이며, 자식 클래스에서 따로 선언하지 않아도 사용할 수 있게 된다. ( 이것이 자바의 상속 ) 

 

즉 오류의 원인은, 해당 클래스를 상속해서 사용하겠다! 해놓고는 이미 부모클래스에서 선언된  year 변수를 또 다 시 

선언했기 때문에 " declares multiple JSON fields named year " 오류가 발생한것이다.

상속한 부분을 보지 못하고 작업해서 오류났음.

 

 

public class testVO extends BaseKeyVO {

    // 이미 부모클래스에 선언되어 있는걸 왜 또 선언하니ㅠ.ㅠ

    private String year ;

    public String getCopyYear() {
        return copyYear; 
     }

    public void setCopyYear(String copyYear) {
         this.copyYear = copyYear;
    }

}