ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java - 메서드 오버로딩과 오버라이딩
    Java/java study 2022. 1. 9. 15:35
    반응형

    메서드 오버로딩과 오버라이딩

     

     

     

     

     

    오버로딩(Overloading)

     

    오버로딩(Overloading) 이란?

     

     사전적으로 '과적하다.'라는 뜻으로 Java에선 하나의 메서드 이름으로 여러 기능을 구현할 수 있도록

    오버로딩(Overloading)이 가능하다.

     

     

     

    오버로딩(Overloading) 조건
    • 메소드의 이름이 같아야 한다.
    • 매개변수의 개수나 타입이 달라야 한다.
    • 매개변수의 순서가 달라야 한다.
    • 리턴 값과 접근 지정자가 달라도 오버로딩의 조건이 성립 안된다.

     

    public class Overloading {
    
    	// 접근 지정자와 리턴 타입이 달라도 오버로딩 조건에 성립이 안된다.
    	public void test() {}
    	protected int test() { return 0;}
    	
    	// 오버로딩은 매개변수의 개수가 다르면 성립
    	public void test(int var1) {}
    	public void test(int var1, int var2) {}
    	
    	// 오버로딩은 매개변수의 타입이 다르면 성립
    	public void test(int var1) {}
    	public void test(String str1) {}
    	
    	// 주의! 오버로딩 모호성 발생
    	public void test(byte var1) {}
    	public void test(int var1) {}
    	
    	// 주의! 가변인자로 인한 모호성 발생
    	public void test(int var1, String ... str1) {}
    	public void test(int var1, String str1) {}
    }

     

     오버로딩을 사용하는 이유는 무엇일까?

     

     동일한 기능의 메서드를 매개변수에 따라 다르게 이름을 정의하면 복잡하고 관리가 어려워 진다.

    이러한 단점을 해결하기 위해 여러 메서드를 동일한 이름으로 관리하기 위해 오버로딩을 사용한다.

     


     

    오버라이딩(Overriding)

     

    오버라이딩(Overriding) 이란?

     

     부모 클래스로부터 상속받은 메서드를 자식 클래스에서 재정의하는 것을 말한다. 상속받은 메서드를

    그대로 사용할 수도 있지만, 자식 클래스에서 상황에 맞게 변경해야하는 경우 오버라이딩이 필요하다.

     

     

     

    오버라이딩(Overriding)의 조건

     

    • 메서드 이름, 매개변수, 리턴 값이 모두 같아야 한다.
    • private, final 메서드는 오버라이딩 불가
    • 부모 메서드의 접근 제한자와 같거나 더 넓은 범위로 오버라이딩 가능
    • super() 지시자로 상위 클래스의 메서드를 사용할 수 있다.
    • 예외(Exception)는 부모 클래스의 메소드 보다 많이 throws 할 수 있다

     

     

    반응형

    'Java > java study' 카테고리의 다른 글

    Java - 상속과 super 키워드  (0) 2022.01.16
    Java - 생성자(Constructor)와 this 키워드  (0) 2022.01.09
    Java - 클래스(Class) 와 객체 생성  (0) 2022.01.09
    Java - LinkedList, Stack, Queue 구현하기  (0) 2022.01.02
    JUnit 5  (0) 2022.01.02

    댓글

Designed by Tistory.