본문 바로가기
코딩 공부/web & Java

[JAVA] 오버로딩과 오버라이딩

by 현장 2022. 9. 13.

오버로딩 (Overloading)

자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다.

 

조건

  • 메소드의 이름이 같아하한다.
  • 매개변수의 개수나 타입이 달라야 한다.
  • 리턴 값만른 것은 오버로딩을 할 수 없다.
public class Total {

	public static void main(String[] args) {
		uInsert("홍길동", '남', 30);
		uInsert("id001", "pw001");
	}

	private static void uInsert(String id, String pw) {
		System.out.println("아이디 : " + id);
		System.out.println("비밀번호 : " + pw);
	}
	
    //오버 로딩
	public static void uInsert(String name, char gender, int age) {
		System.out.println("이름 : " + name);
		System.out.println("성별 : " + gender);
		System.out.println("나이 : " + age);
	}

}

 


오버라이딩 (Overriding)

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

 

조건

  • 메소드의 이름이 같아야 한다.
  • 매개변수가 같아야 한다.
  • 리턴값이 같아야 한다.

Class1

package kr.or.ksmart.Extends;

// 자식 = child
public class BB01 extends CC01 {
	// 메서드 오버라이딩
	public void c1() {
		System.out.println("BB01의 c1메서드");
	}
}

 

Class2

package kr.or.ksmart.Extends;

// 부모 = super = parents
public class CC01 {
	public void c1() {
		System.out.println("CC01의 c1메서드");
	}
}

 

MainClass

public class AA01 {
	public static void main(String[] args) {
		BB01 b = new BB01();
		b.c1();
		CC01 c = new CC01();
		c.c1();
	}

}

 

output

BB01의 c1메서드
CC01의 c1메서드

 


오버로딩과 오버라이딩의 차이점

구분 오버로딩 오버라이딩
접근제어자 부모 클래스의 메소드 접근제어자보다 더 넓은 범위의 접근 제어자를 자식 클래스의 메소드가 사용할 수 있다. 모든 접근 제어자를 사용할 수 있다.
리턴형 동일해야 한다. 달라도 된다.
메소드명 동일해야 한다. 동일해야 한다.
매개변수 동일해야 한다. 달라야 한다.
적용범위 상속 관계에서 적용된다. 같은 클래스 내에서 적용된다.

'코딩 공부 > web & Java' 카테고리의 다른 글

[SQL] SUBSTRING, SUBSTRING_INDEX  (0) 2022.09.14
[JAVA] 추상 클래스와 인터페이스  (0) 2022.09.13
[JAVA] 조건문과 반복문, 반복문 제어  (0) 2022.09.11
[JAVA] 연산자  (1) 2022.09.10
JAVA  (0) 2022.09.09