먼말이지 ..
메서드 오버로딩은 메서드 이름은 똑같이 하는데 ...
슈퍼클래스로부터 상속받은 메서드를 서브클래스에서 새롭게 재정의...
슈퍼클래스의 메서드를 덮어쓴다
포토샵으로 뭐 만들고 저장할 때 같은 이름으로 저장하면 덮어쓸까요? 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 |