728x90

 


 

오버로딩(Overloading) 이란 쉽게 말해서 '과적하다' 라는 말이다.

오버로딩은 상속과는 관계가 없다.

중요한 것은 생성자의 매개변수의 유형과 개수가 다르게 하여 같은 이름의 생성자를 여러 개 가질 수 있다. 라는 것이다.

 

class Cal {
	public int sum(int v1, int v2) {
		return v1 + v2;
	}
    
	// 매개변수의 수를 다르게 하여 같은 이름의 메소드를 또 만들 수 있다.
	public int sum(int v1, int v2, int v3) {
		return v1 + v2 + v3;
	}
    
    // 매개변수의 형태를 다르게 하여 같은 이름의 메소드를 만들 수도 있다.
    public String sum(String x1, String x2){
    	return x1 + x2;
    }
}

 


오버라이딩(Overriding) 이란 부모가 가진 기능을 더 멋지게 보태서 새롭게 "재정의" 하는 것이다. 

 

오버라이딩이란 메소드의 동작만을 재정의하는 것이므로, 메소드의 선언부는 기존 메소드와 완전히 같아야 한다.

하지만 메소드의 반환 타입은 부모 클래스의 반환 타입으로 타입 변환할 수 있는 타입이라면 변경할 수 있다.

 

class Cal {
	public int sum(int v1, int v2) {
		return v1 + v2;
	}
    
	// 매개변수의 수를 다르게 하여 같은 이름의 메소드를 또 만들 수 있다.
	public int sum(int v1, int v2, int v3) {
		return v1 + v2 + v3;
	}
    
    // 매개변수의 형태를 다르게 하여 같은 이름의 메소드를 만들 수도 있다.
    public String sum(String x1, String x2){
    	return x1 + x2;
    }
 class Cal3 extends Cal{
	 public int sum(int v1, int v2) {
		 System.out.println("override!!!"); // 부모의 sum메소드를 새로운 기능을 넣어 재정의
		 return v1 + v2;
	 }
  }
 }

 

만약 부모메소드도 사용하고 싶으면서 오버라이딩을 통해 재정의하고 싶을 때는 어떻게 할까?

그럴때는 super 를 써주면 된다. super 키워드를 사용하여 자식 클래스에서 부모클래스의 메소드를 호출해준다.

 

class Cal {
	public int sum(int v1, int v2) {
		System.out.println("I'm Mom");
		return v1 + v2;
	}
    
	// 매개변수의 수를 다르게 하여 같은 이름의 메소드를 또 만들 수 있다.
	public int sum(int v1, int v2, int v3) {
		return v1 + v2 + v3;
	}
    
    // 매개변수의 형태를 다르게 하여 같은 이름의 메소드를 만들 수도 있다.
    public String sum(String x1, String x2){
    	return x1 + x2;
    }
}
    
 class Cal3 extends Cal{
	 public int sum(int v1, int v2) {
		 super.sum(v1, v2);
		 System.out.println("override!!!"); // 부모의 sum메소드를 새로운 기능을 넣어 재정의
		 return v1 + v2;
	 }
  }

 


 

 

간단히 정의하면 오버로딩(overloading)은 새로운 메소드를 정의하는 것이다.

하지만 오버라이딩(overriding)은 상속받은 기존의 메소드를 재정의하는 것이다.

'JAVA' 카테고리의 다른 글

Finally와 Try with Resource  (0) 2021.07.11
인터페이스(INTERFACE)보충 및 다형성(POLYMORHPISM)  (0) 2021.07.11
스태틱(STATIC)  (0) 2021.07.05
인터페이스(INTERFACE)  (0) 2021.07.02
형변환  (0) 2021.07.02
복사했습니다!