상세 컨텐츠

본문 제목

도대체 자바에서 상속_메서드 오버라이딩(method overriding)이란?

java_자바

by 쫑메이 2020. 6. 26. 00:28

본문

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

자바 상속에서 오버 라이딩(method overriding)이

뭘까?

 

 


 

 

 

 

 

상속_메서드 오버라이딩(method overriding)

 


 

 부모 클래스에 정의된 기능을 자식 클래스에 적합하게 수정해서 재정의하는 것

메서드 오버라이딩이라고 함

 

 

한마디로 메서드재정의. 덮어쓰기. overwrite

 

 

cf) 오버 로딩: 파라미터가 다른 것을 여러 개 만드는 것

 

 

 

 

 

 

 

 

상속_메서드 오버 라이딩(method overriding):특징

 


 

 

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

 

서브 클래스에서는 더 이상 슈퍼클래스의 메서드가 보이지 않고

 

자신이 오버라이딩 상속_메서드오버라이딩(overriding) 한메 서드만 보이게 됨

(즉, 슈퍼클래스의 메서드는 은닉된다)

 

 

 

2) 슈퍼클래스의메서드에 기능을 추가하는 등 메서드 내용이 필요할 때 사용

 

 

 

 

3) static, final, private 제한자가 지정된 메서드는 오버라이딩 불가

 

 

 

 

 

 

 

 

 

 

 

 

 

상속_ 메서드 오버라이딩(method overriding)을 만드는 규칙


 

 

 

반드시상속관계가 전제되어 있어야 한다

 

부모랑 똑같이 생긴 것을 만들어야 한다.

 

1. 메서드 이름은 조상 클래스의 메서드 이름과 같아야 한다

 

 

2. 매개변수의 개수, 타입, 순서는 조상 클래스의 메서드와 같아야 한다

 

 

3. 리턴 타입은 조상 클래스의 메서드와 같아야 한다

=> 리턴타입은 상속관계에 있는 서브 클래스 타입으로 변경은 가능함

 

 

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

 

즉, 메서드 선언부를 동일하게 하고 구현부만 다시 작성하라는 말이다

 

 

 

5. 접근 제한자는 부모 클래스의 메서드와 범위가 같거나 넓어야 한다

 

 

6. 부모 클래스의 메서드보다 더 상위의 예외를 던질 수는 없다

 

 

 

 

 

 

 

 

 

 

 

 

상속_ 오버라이딩(method overriding) 단축키

 


 

 

 

오버라이딩 단축키 : Alt + Shift + S -> V

@Override

public void jump() { // Person 클래스의 jump() 메서드는 더 이상 보이지 않는다!

System.out.println("SpiderMan의 점프!");

}

 

 

 

 

 

 

 

@Override는 단순 주석이 아니라

이 메서드는 재정의한 메서드니까 메서드 오버라이딩 규칙에 맞지 않으면

오류를 발생시키라는 정보를 JVM에게 전달한다

 

 

 

 

 

 

 

 

상속_ 오버라이딩(method overriding):코드의 통일성

 


 

아래 예제를 보면 상속을 쓰면 cry라는 메서드로 통일했지만,

dog가 부르면 멍멍, cat을 부르면 야옹이라는 결과가 나온다

 

결과: 코드의 통일성이 보인다

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

상속_ 멤버 변수의 오버라이딩(method overriding)

 


 

 

메서드 오버라이딩뿐만 아니라 멤버 변수도 오버라이딩이 가능하다

즉, 메서드도 덮어쓸 수 있지만 멤버 변수도 덮어쓸 수 있다

 

만약 슈퍼클래스의 멤버 변수와 동일한 이름의 멤버 변수를

서브 클래스에서 선언하면 슈퍼클래스의 멤버 변수는 은닉된다

 

은닉된 슈퍼클래스의 멤버 변수의 변수를 은닉 변수라고한다

 

 

 

 

 

 

 

 

 

"부모 클래스에 정의된 기능을 자식 클래스에 적합하게 수정해서 재정의하는 것을

메서드 오버라이딩이라고 함

한마디로 메서드 재정의. 덮어쓰기"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ㅣ읽느라 수고 많으셨어요~ㅣ

 


 

 

 

 

 


 

 

 

 

부족한 글을 읽어주셔서 감사드립니다

아직 부족한 게 많으니

틀린 곳이 있다면

조언의 말씀 꼭 부탁드립니다!!!!

 

 

 

 

 


 

 

 

반응형

관련글 더보기