IT/Android studio

[Android] @Override가 뭘까?

Buang 2023. 4. 23. 14:38
반응형

 

 

자바로 코딩을 하다보면 @Override라는 게 보일 것이다.

이걸 어노테이션이라고 한다.

 

컴파일러에게 @Override 아래에 작성된 메서드가

부모 메서드를 오버라이딩하는 거라고 알려주는 것이다.

 

*오버라이딩이란? 

부모 클래스에 정의되어 있는 메서드를 자식 클래스에서 재정하는 것을 말한다.

 

 

오버라이딩 예시

 

package src.chap_07.camera;

// 사진 촬영, 동영상 모듈을 녹화할 수 있는
// 카메라 부품이 모여져있는 camera class다.

public class Camera { // 부모 클래스

    public  String name; //
// 위에서 만든 name이란 인스턴스 변수를
// 아래 생성자 함수가 전달받아서 값을 생성해 준다.

    public Camera () {
        this.name = "카메라";
    }


    //카메라의 주요 기능을 보여주는 method
    public void showMainFeature() {
        System.out.println(this.name + "의 주요기능 : 사진 촬영, 동영상 녹화");
    }


}

위와같이 카메라의 기능을 알려주는 camera 클래스가 있다고 해보자.

하단에 있는 showMainFeature 메서드를 잘 기억해두고 아래를 봐보자.

 

package src.chap_07.camera;

public class SpeedCam extends Camera{

    // 과속단속 카메라 class다.
    public SpeedCam () {
        this.name = "과속단속 카메라";
    }


    @Override
    //위의 노랑색 글씨로 된 Overrid는 에노테이션이라고 한다.
    // 컴파일러에게 아래 showMainFeature 페서드는 부모 메서드(Camera)를 오버라이딩
    // 하는 거라고 알려주는 것이다.
    public void showMainFeature () {
        System.out.println(this.name + "의 주요기능 : 속도 측정, 번호 인식");
    }
}

 

과속단지 카메라 클래스인 SpeedCam 클래스를 만들어주고 위와같이 코드를 작성했다.

public class SpeedCam extends Camera를 작성해 줌으로써

Camera 클래스를 부모 클래스로 두고 있다고 명시한 것이다.

 

위의 코드 하단에 Camera 클래스에 있던

showMainFaure 메서드가 보인다.

 

함수 이름이 똑같지만 함수 안에 쓰인 내용은 다르다.

카메라의 기능과 과속단속 카메라의 기능이 다르니

안의 내용도 달라진 것이다. 

 

이렇게 부모 클래스(Camera)에 정의되어 있는 메서드(showMainFeature)를

자식 클래스(SpeedCame)에서 재정하는 것을 오버라이딩이라고 말한다.

 

그리고 자식 클래스에서 오버라이딩한 걸 @Override를 통해 표시를 해준다.

 

 

 

 

* 나도코딩 님 강의 영상을 보면서 필기한 노트입니다.

반응형