슈퍼클래스로부터 메소드를 상속받을 때, 서브클래스 내에 같은 이름의 메소드가 있는 경우에
시그네췌(Segnature)가 다르면 중복(overloading)이 되고 시그네췌 (Segnature) 가 같으면 재정의(overriding)가
된다.
오라클자바커뮤니티에서 설립한
오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝,
힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)
오버라이딩
상속관계에 있는 클래스들간에 같은 이름의 메소드를 정의하는 행위
기존 클래스의 메소드 구현 부분만 약간 변화시켜 새로운 클래스를 생성할 수 있다
매개변수의 개수와 타입이 같아야 한다.
오버로딩
같은 클래스 내에 같은 이름의 생성자나 메소드를 사용하는 행위
매개변수의 개수와 타입이 달라야 한다
[오버라이딩 예제]
class A {
int i=10;
int f() { return i; }
static char g() { return 'A'; }
}
class B extends A{
int i=20; //AAC i°¡ °¡·AAo´A°IAI´U.
int f() { return -i; }//AcA¤AC
static char g() { return 'B'; }
}
public class OverrideTest {
public static void main(String[] args) {
B b = new B();
System.out.println(b.i); //20
System.out.println(b.f()); //-20
System.out.println(b.g()); //B
System.out.println(B.g()); //B
A a = b; //A a = (B) bμμ °¡´E
System.out.println(a.i); //10
System.out.println(a.f()); //-20
System.out.println(a.g()); //A
System.out.println(A.g()); //A
}
}
[오버로딩 예제]
class OverLoadingTest {
public void say() {
System.out.println("default...");
}
public void say(String msg) {
System.out.println(msg);
}
public static void main(String args[]) {
OverLoadingTest ol = new OverLoadingTest();
ol.say();
ol.say("안녕하세요~ 반갑습니다...");
}
}
댓글 없음:
댓글 쓰기