오버라이딩과 오버로딩

JeongO·2023년 3월 2일
0

오버라이딩, 오버로딩 모두 동일한 메서드명을 다양하게 구현하는 방식이고 OOP의 '다형성'을 구현하는 방법 중 하나이다.

🟠 오버라이딩

  • 메소드를 재정의 하는 것을 말한다.
  • 상속 관계에서, 부모가 가진 어떤 메소드들은 자식 클래스가 사용하기에 적합하지 않아 메소드를 수정해서 사용하는 것.

규칙

  • 부모의 메소드와 동일한 리턴 타입, 메소드 이름, 매개 변수 목록 을 가져야 한다.

  • 접근 제한을 더 강하게 재정의할 수 없다.

  • 새로운 예외(Exception)를 throws할 수 없다.

  • final이 선언된 메소드는 더이상 재정의 할 수 없는 최종 메소드이다.

  • 오버라이딩 하면 부모 객체의 메서드는 숨겨지고, 자식 객체에서 메서드 호출하면 반드시 오버라이딩된 자식 메서드가 호출된다.

  • 자식객체가 자신이 오버라이드한 부모의 메소드를 호출하고 싶으면 'super.메소드()'를 사용한다.


class Parent{
	public void call( ){
    	System.out.println("부모");
        }
    }
    
    
class Child extends Parent{
	
    @Override
    public void call( ){
    	System.out.println("자식");
        }
    }


public class Override{

	public static void main(String[] args) {	
    
	Parent p = new Child();
    p.call();
    
    }
 }
  
 👉 "부모"가 아닌 "자식"이 출력된다 
    (동적바인딩 : 재정의된 메서드를 먼저 호출하는 규칙)


🟠 오버로딩

  • 메서드 확장의 개념이다.
  • 같은 이름의 메소드를 중복하여 정의하는 것.
  • 자바에서는 원래 한 클래스 안에 같은 이름의 메소드를 가질 수 없지만 오버로딩하게되면 여러 메소드를 같은 이름으로 정의할 수 있다.
  • 메소드에 사용되는 이름을 절약할 수 있고, 메소드 호출 시 전달해야 할 매개변수의 타입이나 개수를 신경쓰지 않아도 된다.
  • 대표적인 오버로딩 : println(다양한 매개변수 가능)

규칙

  • parameter의 개수나 타입이 달라야한다.

  • 리턴타입과 함수명은 같아야 한다. (리턴타입이 다른 경우에는 오버로딩이 성립하지 않는다)

profile
IT'S YOUR VICTORY

0개의 댓글

관련 채용 정보