상속이란?
A클래스가 B클래스를 상속받으면, B클래스가 가지고 있는 메소드와 필드들을 새로 작성하지 않고 바로 A클래스에서 사용 가능하다. 이는 객체지향 설계에서 매우 유용한 개념으로, 여러 클래스를 공통으로 관리하여 유지/보수를 보다 효율적으로 해 준다. 자바에선 다음 방식으로 상속을 표시한다.
public class AClass extends BClass {
// A클래스가 B클래스를 상속한다는 표현
}
단, final class를 다른 클래스가 상속받을 수 없다.
오버라이딩 (Overriding)
자식 클래스가 상속받은 부모 메소드를 고쳐 사용(재정의)하는 행위를 오버라이딩이라고 한다. 메소드를 오버라이딩 하면 해당 메소드를 자식 클래스를 통해 실행하면 오버라이딩된 내용의 메소드가 실행된다. 자바에선 @Override 어노테이션으로 표시한다.
오버라이딩을 할 때 다음 조건을 따른다.
- 메소드 이름, 매개변수 개수/타입, 리턴 타입은 동일해야 한다
- 접근제한자는 부모클래스와 같거나 더 넓게만 설정 가능하다
- 예외 발생 시 같은 형식이거나 더 구체적인 형식만 가능하다
- private 메소드는 오버라이딩이 불가하다
- final 메소드는 오버라이딩이 불가하다
final class는 상속이 불가하므로 오버라이딩을 통해 내부의 메소드를 재정의할 수 없다. 그래서 보안상 중요한 메소드들을 보호하기 위해 final class를 사용한다.
오버로딩 (Overloading)
오버로딩은 한 클래스 내에서 같은 이름의 메소드를 여럿 정의하는 행동이다. 이를 통해 동일한 메소드로 서로 다른 매개변수 개수/타입/순서를 사용할 수 있다. 또한 리턴 타입도 다르게 설정할 수 있다.
오버라이딩과 달리 접근제어자와 예외처리도 자유롭게 설정 가능하다.
'TIL : JAVA' 카테고리의 다른 글
JDBC 로 MySQL 연결하기 (0) | 2024.03.30 |
---|---|
JDBC 기초 (0) | 2024.03.28 |
[Java] 람다식 (Lambda Expression) (0) | 2024.03.14 |
[Java] 예외처리 (Exception) (0) | 2024.03.12 |
입출력 (I/O) (0) | 2024.03.03 |