JAVA Programming/JAVA 개념 정리

JAVA Method Overriding 자바 메서드 오버 라이딩

psy_er 2021. 11. 11. 00:12
728x90

JAVA Method Overriding 자바 메서드 오버 라이딩

 

메서드 오버 라이딩

 

super 클래스에서 상속받은 멤버를 sub 클래스에서 다시 정의하는 것이다. 기존의 멤버를 요구사항에 맞게 수정하는 효과를 가진다. super 클래스에서와 동일한 형태로 정의한다. super 클래스에서 상속된 멤버는 은폐되어 sub 클래스 객체의 메서드에서 은폐된 멤버에 접근하기 위해서는 super 참조 변수를 사용해야 한다. 오버 라이딩과 오버 로딩을 헷갈리지 말자.

 

구분 오버라이딩(재정의) 오버로딩(다중정의)
접근제한 부모의 멤버 함수보다 자식 멤버 함수의 접근제한이 비슷하거나 더 넓어야 한다. 상관없다.
반환형 같아야 한다. 상관없다.
메서드명 같아야 한다. 같아야 한다.
인자 (타입 / 개수) 같아야 한다. 반드시 달라야 한다.

 

protected 접근 지정자

 

protected 접근 지정자는 default 보다 좀 더 유연한 접근을 제공해준다. 같은 패키지의 일반, 자식 클래스에서는 public처럼 자유롭게 접근이 가능하고 다른 패키지의 자식 클래스에서는 접근이 가능하지만, 일반 클래스에서는 접근이 불가능하다. 따라서 같은 패키지 내의 모든 클래스와 다른 패키지의 파생 클래스에서는 접근이 가능하다.

 

 

this 참조 변수

 

this 참조 변수는 특정 객체 내에서 객체 자신을 의미하는 참조 변수이다. 상속받은 상위 클래스 멤버도 접근 가능하고, 대체로 매개변수가 멤버 필드 이름과 같을 경우에 사용된다.

 

 

super 참조 변수

 

super 참조 변수는 현재 객체의 한 단계 바로 위의 상위 클래스를 의미하는 참조 변수이다. 메서드 오버 라이딩으로 은폐되었던 상위 클래스의 메서드 호출 시 사용 가능하다.

 

 

상속과 생성자

 

생성자를 이용하여 객체 생성과 동시에 각 멤버 변수의 값을 초기화하는 것이 효율적이다. super 클래스의 생성자로는 sub 클래스 객체를 초기화할 수 없다. sub 클래스 객체를 위한 생성자는 따로 정의되어야 한다. 이때 super 생성자를 이용하여 sub 클래스의 생성자를 정의한다. 상속받으 멤버 변수에 대해서 super 클래스의 생성자를 불러와 초기화시키고, 필요시 super 클래스 생성자 멤버 변수를 오버 라이딩한다. sub 클래스에서 따로 추가된 멤버 변수는 sub 생성자 안에서 초기화시켜준다.

 

*주의* super 클래스의 생성자 호출 시 sub 클래스 생성자의 맨 첫 줄에 위치해야 한다.

재정의되어 은폐된 멤버는 super, 나머지 멤버는 this 참조 변수로 접근한다.

 

 

728x90