JAVA의 Class (7) 오버로딩과 오버라이딩

Updated:

1. 오버로딩 (Overloading)

같은 이름의 메서드/생성자를 여러개 정의하고, 매개변수의 갯수와 유형을 다르게 정의하여 활용하는 경우다.

메서드와 생성자 모두 오버로딩 가능하다.

  • 메서드 오버로딩
  • 생성자 오버로딩 : 오버로딩 생성자와 디폴트 생성자 중 하나만 사용해야 함
package Pack04;
public class Parents {
	// 속성
	private String parentsData01;
    
	// 디폴트 생성자
	public Parents() {System.out.println("Parents 객체 생성완료");}
    
    	// 오버로드 생성자
    	public Parents(String x) {System.out.println("Parents 객체 생성완료" + x);}
        
	// 기능 
	void test01() {System.out.println("이것은 기능 1번");}
	
    	// 오버로드 기능
    	void test01(int x) {System.out.println("이것은 기능 " + x +"번");}
}


2. 오버라이딩 (Overriding)

상위 클래스를 하위 클래스가 상속할 때, 상위 클래스의 메서드에도 접근 가능할 수 있다. 이 때, 접근하여 사용하는 상위 클래스의 메서드를 재정의해서 사용하는 경우다. 상위 클래스의 메서드와 같은 이름의 메서드로, 매개변수의 갯수와 유형 또한 동일해야만 한다. 일종의 덮어쓰기라고 생각하면 된다. (부모가 정의한거 싫어서 다시 정의해서 쓸래!)

package Pack04;
public class Child extends Parents {
	// 속성
	private String childData01;	
	
	// 디폴트 생성자
	public Child() {System.out.println("Child 객체 생성완료");}
	
	// 오버라이딩
	void test01(String x) {
		System.out.println("Parents의 기능 싫어서 바꿀래! 입력값은 " + x + "야!");}			
}