오버로딩 (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 |