YTCW

java overriding 본문

java

java overriding

YTCW 2024. 9. 6. 14:38

오버라이딩이란 (메서드의 재정의)

자식 클래스가 부모 클래스에서 정의된 자신의 상황에 맞게

재정의한것을 오버라이딩이라고 한다. 

말 그대로 상속 관계에서만 사용이 가능하다

 

오버라이딩의 특징

메서드의 시그니처가 일치한다.

부모 클래스에서 정의된 메서드와 동일한 이름, 매개변수 구성을 가져야 한다.

반환타입은 같거나 자동 형 변환이 가능한 것이어야 한다.

 

@Override(어노테이션, 주석)

오버라이딩 된 메서드임을 명시적으로 표시

 

선언부

반환타입 메서드명 (매개변수)

aMethod (int a, int b) { return };

 

오버라이딩 구현 방법

부모 클래스의 상속받은 메서드를 자식 클래스에서 다시 정의

메서드의 이름, 매개변수를 일치시키고, 반환타입은 같거나 자동 형 변환 가능하게 작성해야한다.

메서드 위에 @Override 어노테이션을 작성한다.

 

오버라이딩을 사용하는 이유

다형성 구현이 가능하다 

다형성인란

많은다, 모양형, 다양한 형태의 기능을 수행하는 코드를 작성할 수 있다.

 

그렇다면 오버로딩도 다형성이 있을까? ㅇㅇ

재사용성 확장성 향상이되기때문에 사용한다.

기존 코드 변견 없이 , 새로운 기능을 추가하거나 변경 가능하다.

 

package chapter06;

class AnimalClass {
	void sound () {
		System.out.println("동물이 소리를 냅니다.");	
	}
}
class DogClass extends AnimalClass {
	// void sound () {
    //	 System.out.println("동물이 소리를 냅니다.");	
    // }메서드가 생략 되어있다.
	
	// 어노테이션
	// 코드에 메타데이터를 제공하는 방법
	// 현재 메서드가 부모 클래스의 메서드를 오버라이딩 한다는 것을 명시하는 것이다.
	@Override 
	void sound() {
		System.out.println("개가 멍멍하고 짖습니다.");
	}
}

class CatClass extends AnimalClass {
	@Override
	void sound() {
		System.out.println("고양이가 야옹하고 웁니다.");
	}
}
public class Overriding {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		DogClass dog1 = new DogClass();
		dog1.sound();
		CatClass cat1 = new CatClass();
		cat1.sound();
		// 부모로 부터 상속받은 속성이나 메서드를 확장하는 개념이고
		// 해당 상태나 동작을 반드시 가지지만 상속받는 클래스마다 차이를 두고 싶을 때  사용한다.
		
		// 오버로딩과 오버라이딩
		// 모두 메서드의 이름을 재사용하는 방법 (다형성)
		// 오버로딩은
		// 같은 클래스 내에서 같은 이름을 가진 메서드를 여러 개 정의
		// 오버로딩은 메서드 명이 동일해야하지만 매개변수 타입과 개수 , 순서 중에 적어도 하나 이상은 달라야 한다.
		// 메서드의 동작을 다양한 상황에 맞게 조정한다
		
		
		
		// 오버라이딩은
		// 상속 관계에 있는 클래스에서 사용
		// 메서드의 시그니처(이름, 매개변수, 반환타입)가 같아야 함
		// 메서드의 동작을 변경하거나 확장하는 경우가 많다.
		// @Override 어노테이션을 사용하면 컴파일러에게 전달한다.
		
		
		
	}

}

'java' 카테고리의 다른 글

java 캡슐화  (0) 2024.09.06
java 접근 제어자, modifier  (0) 2024.09.06
java Inheritance  (2) 2024.09.06
java constructor  (0) 2024.09.06
java 용어 정리, overloading  (0) 2024.09.06