[Java] @Override 꼭 적어야할까

rvlwldev·2023년 3월 29일
0

Java

목록 보기
8/8

Override는 메소드를 재정의하는 행위를 뜻한다.
보통 상위클래스를 상속받고 상위클래스의 메소드를 재정의할때 사용한다.

이 경우 @Override 어노테이션을 생략이 가능하다.
근데 저 짧은 어노테이션 하나로 상위클래스에 같은 메소드를 시그니쳐를 가지고 있다!
라는 것을 알려주는데 굳이 생략할 필요가 있을까..?

생략이 가능하기에 어느날 상위클래스에서 해당 메소드가 사라져도 에러가 안날 것이다..
곧 자식클래스만의 메소드로 남게 될 것이며 이로 인해 프로그램에서 뜻하지 않은 버그가 생겨날 여지가 있다고 생각하기에 @Override 는 왠만하면 생략하지 않는 것이 좋을 것같다.

비슷하게 메소드 Overload 도 있다.
같은 메소드이름으로 파라미터를 다르게 설정한다면 Overload 할 수 있다.

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

class Child extends Parent {
	// @Override 사용불가
    public void hello() {
        System.out.println("안녕!");
    }
}

부모클래스와 자식클래스의 hello 메소드는 파라미터가 다르기에 사실 상 다른 기능을 하는 메소드이다.
이 경우 Overload 이기에 @Override 어노테이션을 사용할 수 없다.

하지만 메소드 시그니쳐를 동일하게 바꾼다면 @Override를 사용할 수 있다.
(생략도 가능하다.)

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

class Child extends Parent {
	@Override // 생략가능
    public void hello(String name) {
        System.out.println("안녕! " + name + "!");
    }
}

0개의 댓글