본문 바로가기

develop/Java

메서드 오버라이딩(Method Overriding)

먼말이지 ..

 

메서드 오버로딩은 메서드 이름은 똑같이 하는데 ...

 

슈퍼클래스로부터 상속받은 메서드를 서브클래스에서 새롭게 재정의...

슈퍼클래스의 메서드를 덮어쓴다

 

포토샵으로 뭐 만들고 저장할 때 같은 이름으로 저장하면 덮어쓸까요? yes -> 그 이름으로 된 새로운 파일 생성

이라고 이해하는 중

 

기존 슈퍼클래스의 메서드와 동일하게 생긴 메서드를 정의하게 되므로

서브클래스 인스턴스에서는 더 이상 슈퍼클래스의 메서드가 보이지 않는다. (은닉)

 

슈퍼클래스의 메서드를 그대로 사용하지 않고, 새로운 기능을 추가하는 등 메서드의 내용을 변경할 때 사용

=> 기능은 변경하되, 형태는 똑같이 유지

 

<메서드 오버라이딩 규칙>

1. 상속 관계에서만 사용

2. 메서드 시그니처 (메서드명, 리턴타입, 파라미터)가 일치해야함

3. 접근제한자는 같거나 넓은 범위로만 변경 가능(=좁아질 수 없음)

 

 

동물 클래스에서

"동물 울음 소리" 를 출력하는 메서드 정의

class Animal{
	public void cry(){
    	System.out.println("동물 울음 소리");
    }
}

 

동물 클래스를 상속받는 강아지 클래스

"멍멍"

class Dog extends Animal{
	public void cry(){
    	System.out.println("멍멍");
    }
}

 

동물 클래스를 상속 받는 고양이 클래스

class Cat extends Animal{
	public void cry(){
    	System.out.println("야옹");
    }
}

 

셋 모두 메서드 모양이 일치하지만 기능이 다름

'develop > Java' 카테고리의 다른 글

레퍼런스 형변환  (0) 2021.03.08
생성자 super  (0) 2021.03.06
접근 제한자(Access Modifier)  (0) 2021.03.01
상속(Inheritance)  (0) 2021.03.01
싱글톤 디자인 패턴(Singleton Design Pattern)  (0) 2021.03.01