본문 바로가기

자바

오버라이딩(overriding)

 오버라이딩(overriding)이란?

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

 

자식 클래스에서 부모의 메소드를 수정해야 할때 사용된다. 

일반 클래스의 상속 관계에서는 많이 사용되지는 않고 

추상 클래스나 인터페이스에서 필수적으로 사용되는 개념이다.

 

자식클래스에서 부모클래스의 메소드와 동일한

시그니쳐(메소드 이름, 리턴 타입, 매개변수의 개수/자료형/순서)를 적용하여야 한다.

 

지구인은 아시아인의 부모 메소드이다. 아시아인은 한국인의 메소드이다.

 

 

포인터가 아시아인 hello2()를 가르키고 있다.

아시아인은 지구인을 상속하고 있다. 지구인은 아시아인의 부모메소드이다.

hello(), hello2()는 가능하지만 hello3()는 불가능하다.

hello3()는 아시아인의 자식태그이기 때문이다.  

 

 

지구인, 아시아인, 한국인 모두 hello()라는 똑같은 메소드를 가지고 있다.

자식 메소드가 부모의 메소드랑 똑같은 메소드를 가지고 있으면 부모 메소드를 오버라이드한다.

오버라이드는 부모의 메소드를 무효화 시킨다.

 

 

 

 

 

오버라이딩 코드

package ex10;

class 동물{
	void sound() {
		System.out.println("동물소리");
	}
}

class 강아지 extends 동물{
	void sound() {
		System.out.println("강아지소리");
	}
}

class 고양이 extends 동물{

}

public class Extends03 {

	public static void main(String[] args) {
		동물  u1 = new 강아지();
		u1.sound();
		
	}

}

동물 u1 = new 강아지();

u1은 동물 메소드를 가리키고 있다. 

u1.sound

동물 클래스는 강아지 클래스의 부모 클래스이다. 

부모, 자식 클래스에서  똑같은 sound라는 메소드를 정의 하고 있기 때문에 

부모클래스의 sound 메소드는 오버라이드 해서 무효화가 되고

자식클래스의 sound 메소드에서 재정의되어 출력되게 한다.

 

 

 

 

 

'자바' 카테고리의 다른 글

자바를 DB연결  (0) 2022.08.12
자바 SMS 전송 라이브러리  (0) 2022.08.05
자바 static 개념연습예제  (0) 2022.08.03
생성자(constructor)  (0) 2022.08.02
이클립스 - toString 자동완성  (0) 2022.08.02