학습(구)/Java(구)

오버로딩과 오버라이딩

잉아당 2021. 3. 22. 14:46
728x90

오버로딩

- 하나의 클래스에 동일 이름값의 메서드와 생성자들이 존재 하는 것을 말합니다.

- 이때 각 구분은 이름값 + 매개변수 개수 + 매개변수 타입 + 매개변수 순서 등으로 구성된 값이 사용되고 이것이 실질적인 식별자 역할을 합니다.

 

오버라이딩(재정의)

- 부모 클래스의 멤버 혹은 인터페이스의 멤버를 자식 또는 구현 클래스에서 재정의 하는 것을 말합니다.

- 자식 객체의 참조 값을 부모 타입으로 업 캐스팅 후 부모 메서드를 호출하면 오버라이딩 된 자식 메서드가 동적 바인딩(런타임시 결정)되어 수행이 되는데 이를 통해 다형성을 구현합니다.

 

this와 super

#this

- 현재 객체를 참조할 수 있습니다.

- 람다의 경우 람다 객체를 사용하는 객체의 값을 참조합니다.

- 주로 매개변수와 필드의 이름이 같을때 필드를 가르키기 위해 사용하며 사용하지 않을 경우 Scope룰에 의해 가장 가까운 쪽인 매개변수를 가르키게 됩니다.

 

#this()

- 현재 객체의 생성자를 호출합니다.

- 생성자 오버로딩에서 여러 생성자들 중 공통된 부분을 super()를 사용함으로써 중복 코딩을 줄일 수 있습니다.

 

#super

- 부모 객체를 참조할 수 있습니다.

 

#super()

- 부모 객체의 생성자를 호출합니다.

- 자식 생성자는 super()를 이용해 조상부터 순차적으로 부모 생성자를 먼저 호출해야합니다. 즉 부모 생성자에서도 그 위의 부모의 생성자를 super()를 통해 호출함으로써 거슬러 올라가 조상까지 호출할 수 있게 됩니다.

'학습(구) > Java(구)' 카테고리의 다른 글

중첩 클래스와 중첩 인터페이스  (0) 2021.03.22
접근 제한자와 패키지  (0) 2021.03.22
클래스와 객체의 멤버  (0) 2021.03.22
클래스와 객체  (0) 2021.03.18
제어문  (0) 2021.03.18