[JAVA] 객체지향 - 오버라이딩

2024. 9. 1. 01:27·Back-End/Java

[작성일: 2023. 01. 28]

 

목차

     

    오버라이딩(Overriding)

    • 상속받은 조상의 메서드를 자신에게 맞게 변경하는 것
    • 부모 클래스의 메서드를 자식 클래스가 변경해서 정의하는 것
    class Point {
      int x;
      int y;
        
      String getLocation() {
        return "x: " + x + ", y:" + y;
      }
    }
    
    class Point3D extends Point { // 상속
      int r;
        
      String getLocation() { // 오버라이딩
        return "x:" + x + ", y:" + y + ",r:" + r;
      }  // 선언부는 변경 불가, 내용(구현부)만 변경 가능
    }
    
    public class OverrideTest {
      public static void main(Strint[] args) {
        Point3D p = new Point3D();
        p.x = 3;
        p.y = 5;
        p.r = 7;
        System.out.println(p.getLocation());
        // 오버라이딩 된 자손의 것이 호출됨.
      }
    }

     

     

     

     

     

    오버라이딩 조건

    1. 선언부(반환타입, 메서드 이름, 매개변수 목록)가 조상 클래스의 메서드와 반드시 일치해야 함.
    2. 메서드 명 뿐만 아니라 메서드에 들어가는 변수의 타입이 동일해야 함.(타입이 다르면 오버로딩(overloading))
    3. 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없음.
    4. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없음. (같거나 적어야 함.)
    5. 부모의 권한보다 같거나 낮은 권한이어야 함.
    6. 동일한 이름, 동일한 타입의 메서드는(오버라이딩을 하면) 자식 메서드가 우선으로 실행 됨.

     

     

     

     

    오버로딩 vs 오버라이딩

    오버로딩(overloading)  기존에 없는 새로운 메서드 정의(new)
    오버라이딩(overriding) 상속받은 메서드의 내용 변경(change, modify)

    class Parent {
      void parentMethod() {} // 부모
    }
        
    class Child extends Parent { // 상속
      void parentMethod() {} // 1. 오버라이딩
      void parentMethod(int i) {} // 2. 오버로딩
        
      void childMethod() {} // 3. 메서드 새로 정의
      void childMethod(int i) {} // 4. 오버로딩
      void childMethod() {} // 5. 중복정의. 에러
    }

     

     

     

     

     

     

     

     

     

     


    🐣 해당 게시글은 자바의 정석(남궁성 님) 영상으로 함께 공부하며 요약/정리한 글입니다.
    🐣 입문 개발자가 작성한 글이므로 틀린 내용이나 오타가 있을 수 있습니다.

     

    저작자표시 비영리 변경금지 (새창열림)
    'Back-End/Java' 카테고리의 다른 글
    • [JAVA] 객체지향 - 참조변수의 형변환
    • [JAVA] 객체지향 - 다형성
    • [JAVA] 객체지향 - 제어자, 접근 제어자, 캡슐화
    • [JAVA] 객체지향 - import
    뚜비
    뚜비
    1년차 백엔드&iOS 개발자의 감자 탈출 블로그 🥔🥔
    • 뚜비
      뚜비의 개발로그
      뚜비
    • 전체
      오늘
      어제
    • 글쓰기     관리
      • Devlog
        • Back-End
          • Java
          • Spring
          • JPA
          • HTTP
          • Security
          • Back-End
          • Front-End
        • 알고리즘
        • iOS
          • Swift
        • Database
        • Tips
          • Git & GitHub
          • A to Z
        • 프로젝트
        • 생각정리
    • 태그

      Database
      MVC
      DB
      변수
      자바스크립트
      의존성주입
      spring
      프로그래머스
      JPA
      Security
      자바
      HTTP
      sql
      스프링
      백준
      다형성
      html
      Java
      게시판만들기
      알고리즘
      생성자
      김영한
      Spring Security
      Swift
      jsp
      데이터베이스
      javascript
      성능최적화
      최주호
      객체
    • hELLO· Designed By정상우.v4.10.0
    뚜비
    [JAVA] 객체지향 - 오버라이딩
    상단으로

    티스토리툴바