본문 바로가기

프로그래밍 회고록/Java & Spring

JAVA에서 생성자는 메소드일까

728x90
반응형

 

# 궁금한 사항

 생성자 역시 메소드처럼 파라미터가 들어가고 여러가지 변수가 들어가며 결과를 도출해 낼 수 있다 그렇다면

생성자는 메소드의 일종이라고 할 수 있을까?

# 내가 찾은 답

생성자는 클래스 내부에서 동적인 역할을해 아웃풋을 가져온다는 점에서  JAVA의 문법중 하나인 메소드와 공통점이 있다는 점은 분명하지만 메소드와 비교했을때 공통점보다는 상술할 차이점이 더욱 많다는 점에서 생성자는 메소드로 볼 수 없다는 것이 나의 결론이다.

  1. 클래스는 초기화를 위해 생성자라는 특별한 코드 블록을 가질 수 있다. , 생성자는 클래스가 new표현식에 의해 Instance화되어 객체를 생성할 때 객체의 레퍼런스를 생성하기 전에 객체의 초기화를 위해 사용되는 코드의 블록이다.

  2. 생성자는 리턴타입을 가질 수 없다. 
    1. Method에서 void역시 리턴 타입을 가지지 않는데 반해 메소드는 void일지 다른 리턴값을 줄지 선택이 가능하지만
      생성자는 그럴 수 없다.

  3. 생성자는 final변수에 대하여 그것을 주입할 일종의 의무를 가지고 있지만, 메소드는 그런 의무를 가지고 있지 않는다.

  4. 생성자는 new라는 명령어를 통해서 invoke되고 따라서 특별한 Bytecode인 invokespecial 로 컴파일 되지만,
    메소드는 className.method() 처럼 호출할 수 있고 따라서 invokevirtual Bytecode로 컴파일 된다는 점에서
    차이가 있다.

  5. 생성자는 상속되거나 오버라이딩 되지 않는다.

참고자료

https://stackoverflow.com/questions/29145700/can-we-say-constructors-are-methods-in-java

728x90