개발공간/HW

❓@Override 오버라이딩

로지네 2023. 3. 29. 10:08

1. 오버라이딩이 뭔가요?

 

재정의, 다시 구현해서 用 

상위 클래스에 정의된 메소드를 하위 클래스에서 재정의하여 사용하는 것 

입맛대로 골라 ma dish (왜 이 노래가 생각났지?)

 


2. 오버라이딩을 구현하려면 @Override를 꼭 적어야 할까?

 

이 질문은 생각지도 못했는데 곰곰히 생각해보게 되었다..

수업때 들은 내용을 떠올려보니 생략해도 동작은 되었던 것으로 기억한다.

다만 실수 방지, 가독성을 위해 적어주는 편이 좋지 않을까?!

 

 

3. @Override 어노테이션 유무의 차이로 다시 알아보기!

class Parent {
    public void hello(String name) {
        System.out.println("안녕하세요, 저는 " + name + "입니다.");
    }
}

class Child extends Parent{
    // @Override가 있으면 어떻고 없으면 어떤가요?
    public void hello() {
        System.out.println("안녕!");
    }
}

- 어노테이션 無

class Child extends Parent{
    // @Override가 없는 경우
    public void hello() {
        System.out.println("안녕!");
    }
}

 

@Override 어노테이션을 붙이지 않을 경우, hello()라는 메소드를 새로운 메소드로 인식할 것 으로 보임

 

 

- 어노테이션 有

class Child extends Parent{
    // @Override가 있는 경우
    @Override
    public void hello(String name) {
        System.out.println("안녕! " + name + "님!");
    }
}

@Override 어노테이션이 있는 경우 hello() 메소드를 부모 클래스에서 오버라이딩 한 메소드로 인식할 것으로 보임

 

 

오늘의 결론

 

결론적으로 @Override 어노테이션은 생략해선 안된다는 의견이다. 

해당 메소드가 부모 클래스의 메서드를 오버라이딩 하는 것을 분명히 하기 위해서는

@Override 어노테이션을 꼭꼭 사용해야 한다!

 

'개발공간 > HW' 카테고리의 다른 글

❓Spring에서 DI, IoC란 무엇일까?  (0) 2023.04.04
🔎 지그재그(ZigZag)가 가진 기능 분석하기  (0) 2023.04.03
❓@Annotation 어노테이션  (0) 2023.03.29
❓인터페이스란?  (0) 2023.03.28
❓객체 지향의 특징  (0) 2023.03.28