본문 바로가기

UIUX Full-Stack Developer

[0702] overriding 개념

오버라이딩(Overriding)은 객체지향 프로그래밍에서 사용되는 개념으로, 상위 클래스(부모 클래스 또는 슈퍼 클래스)에 정의된 메서드를 하위 클래스(자식 클래스 또는 서브 클래스)에서 재정의하는 것을 말합니다. 이를 통해 상위 클래스의 메서드를 하위 클래스에서 필요에 맞게 변경하거나 기능을 추가할 수 있습니다. 오버라이딩은 상속 관계에 있는 클래스 간에 발생하며, 상속을 통해 부모 클래스의 속성과 메서드를 하위 클래스에서 사용할 수 있습니다.

오버라이딩을 사용하면 상위 클래스에서 이미 정의된 메서드를 하위 클래스에서 다시 정의할 수 있습니다. 이때 메서드의 이름, 매개변수 리스트, 반환 타입은 동일해야 합니다. 오버라이딩된 메서드는 하위 클래스의 인스턴스에서 호출될 때, 상위 클래스의 메서드 대신 하위 클래스에서 재정의된 메서드가 실행됩니다.

오버라이딩을 위해서는 몇 가지 규칙을 따라야 합니다:

오버라이딩된 메서드는 상위 클래스의 메서드와 동일한 시그니처(메서드의 이름, 매개변수 리스트, 반환 타입)를 가져야 합니다.
오버라이딩된 메서드는 상위 클래스의 메서드와 동일한 접근 제어자(또는 더 넓은 범위의 접근 제어자)를 가져야 합니다.
오버라이딩된 메서드는 상위 클래스의 메서드와 동일한 예외를 선언하거나, 예외를 던지지 않도록 선언해야 합니다.
오버라이딩된 메서드는 상위 클래스의 메서드보다 더 좁은 예외를 선언할 수 없습니다.
오버라이딩된 메서드는 상위 클래스의 메서드보다 더 큰 반환 타입을 가져서는 안 됩니다. 하지만, 상속 관계에서는 반환 타입을 하위 타입으로 변환할 수 있습니다. 이를 공변 반환 타입(covariant return type)이라고 합니다.
오버라이딩은 다형성(polymorphism)의 핵심 개념 중 하나입니다. 다형성은 같은 이름의 메서드가 다양한 객체에서 다른 방식으로 동작할 수 있는 능력을 의미합니다. 오버라이딩을 통해 하위 클래스는 상위 클래스의 메서드를 재정의하여 동일한 메서드 호출에 대해 다른 동작을 수행할 수 있습니다. 이를 통해 객체지향 프로그래밍의 유연성과 재사용성을 높일 수 있습니다.

 

[예시]

오버라이딩(Overriding)은 객체지향 프로그래밍에서 사용되는 개념으로, 상위 클래스(부모 클래스 또는 슈퍼 클래스)에 정의된 메서드를 하위 클래스(자식 클래스 또는 서브 클래스)에서 재정의하는 것을 말합니다. 이를 통해 상위 클래스의 메서드를 하위 클래스에서 필요에 맞게 변경하거나 기능을 추가할 수 있습니다. 오버라이딩은 상속 관계에 있는 클래스 간에 발생하며, 상속을 통해 부모 클래스의 속성과 메서드를 하위 클래스에서 사용할 수 있습니다.

오버라이딩을 사용하면 상위 클래스에서 이미 정의된 메서드를 하위 클래스에서 다시 정의할 수 있습니다. 이때 메서드의 이름, 매개변수 리스트, 반환 타입은 동일해야 합니다. 오버라이딩된 메서드는 하위 클래스의 인스턴스에서 호출될 때, 상위 클래스의 메서드 대신 하위 클래스에서 재정의된 메서드가 실행됩니다.

오버라이딩을 위해서는 몇 가지 규칙을 따라야 합니다:

오버라이딩된 메서드는 상위 클래스의 메서드와 동일한 시그니처(메서드의 이름, 매개변수 리스트, 반환 타입)를 가져야 합니다.
오버라이딩된 메서드는 상위 클래스의 메서드와 동일한 접근 제어자(또는 더 넓은 범위의 접근 제어자)를 가져야 합니다.
오버라이딩된 메서드는 상위 클래스의 메서드와 동일한 예외를 선언하거나, 예외를 던지지 않도록 선언해야 합니다.
오버라이딩된 메서드는 상위 클래스의 메서드보다 더 좁은 예외를 선언할 수 없습니다.
오버라이딩된 메서드는 상위 클래스의 메서드보다 더 큰 반환 타입을 가져서는 안 됩니다. 하지만, 상속 관계에서는 반환 타입을 하위 타입으로 변환할 수 있습니다. 이를 공변 반환 타입(covariant return type)이라고 합니다.
오버라이딩은 다형성(polymorphism)의 핵심 개념 중 하나입니다. 다형성은 같은 이름의 메서드가 다양한 객체에서 다른 방식으로 동작할 수 있는 능력을 의미합니다. 오버라이딩을 통해 하위 클래스는 상위 클래스의 메서드를 재정의하여 동일한 메서드 호출에 대해 다른 동작을 수행할 수 있습니다. 이를 통해 객체지향 프로그래밍의 유연성과 재사용성을 높일 수 있습니다.

'UIUX Full-Stack Developer' 카테고리의 다른 글

[0705] 스프링부트 part1. 1~4  (0) 2023.07.05
[0703] Call by value  (0) 2023.07.03
[0701] return 값  (0) 2023.07.01
[0630] 점프투자바 복습  (0) 2023.06.30
object / clone 개념 / class 조사 / object **  (0) 2023.06.30