본문 바로가기
TIL : JAVA

[Java] 상속

by 이페코장인 2024. 3. 20.

상속이란?

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