상속과 오버로딩, 오버라이딩

Kjjedd·2022년 12월 22일

JAVA Practice

목록 보기
3/7

📌오버라이딩(Overriding)이란?

오버라이딩이란 부모가 가지고 있는 메소드와 똑같은 모양의 메소드를 자식이 가지고 있는 것이다.

즉 오버라이딩이란 상속받은 부모 클래스의 메소드를 재정의하여 사용하는 것이다.

📖 오버라이딩의 조건

  • 오버라이딩이란 메소드의 동작만을 재정의하는 것이므로, 메소드의 선언부는 기존 메소드와 완전히 같아야 한다.
    하지만 메소드의 반환 타입은 부모 클래스의 반환 타입으로 타입 변환할 수 있는 타입이라면 변경할 수 있다.
  • 부모 클래스의 메소드보다 접근 제어자를 더 좁은 범위로 변경할 수 없다.
  • 부모 클래스의 메소드보다 더 큰 범위의 예외를 선언할 수 없다.

📖 오버라이딩과 오버로딩의 차이

오버라이딩(overriding)은 상속받은 기존의 메소드를 재정의하는 것이다.
오버로딩(overloading)은 새로운 메소드를 정의하는 것이다.

단어가 비슷하지만 다른 개념!

예제코드

package inheritance_exam;


class A{
    void print(){
        System.out.println("부모클래스의 print() 메소드");

    }
}
class B extends A {
//오버라이딩 된 print() 메소드
    void print() {
        System.out.println("자식클래스의 print() 메소드");
        
        super.print(); //부모클래스의 메소드 호출
    }
    void print(String str){
        System.out.println(str); // 오버로딩 된 print() 메소드
    }
}
    public class overriding {
        public static void main(String[] args) {
            A parents = new A();
            parents.print(); // A 클래스 print()메소드 호출

            B child = new B();
            child.print(); // B 클래스 print()메소드 호출

            A pnc = new B();
            pnc.print(); // 부모클래스의 메소드를 자식클래스에서 오버라이딩

            child.print("오버로딩 된 print() 메소드");
        }
    }

출력

부모클래스의 print() 메소드
자식클래스의 print() 메소드
부모클래스의 print() 메소드
자식클래스의 print() 메소드
부모클래스의 print() 메소드
오버로딩 된 print() 메소드
profile
Gongbuhaja

0개의 댓글