본문 바로가기
java

오버라이딩 overriding / super / 상속 extends / implements

by 코디드 2023. 6. 16.

오버라이딩

-부모 클래스로부터 상속받은 매서드 내용을 재정의 하는 것

-상속 받은 메서드를 그대로 사용해도 상관 없지만 변경해야 하는 경우 부모메서드를 오버라이딩 한다.

 

* 사용 조건

-새로 만드는 것 x 

-내용을 새로 변경 하는 것 o

1. 자식 클래스에서 오버라이딩 하는 메서드는 부모 클래스의 메서드와
- 이름/ 매개변수/ 반환 타입이 같아야 함

2. 접근 제어자는 조상클래스의 메서드보다 좁은 범위로 변경하면 안됨.
* public > protected > default > private (점점 범위가 좁아짐)

3. 부모 클래스의 메서드보다 많은 수의 예외 선언이 불가하다.
- 개수만 문제가 아니고, 자식 클래스에서 더 넓은 범위(e.g. Exception) 를 사용해서도 안됨

4. 인스턴스 메서드를 static 메서드 or 그 반대로 변경할 수 없다.

 

super

-자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 변수

-상속받은 멤버와 자신의 클래스에 정의된 멤버의 이름이 같을 때 super를 붙여 구분한다.

 

 

super()

-this()가 같은 클래스의 다른 생성자를 호출하는데 사용되듯이 super()는 부모 클래스의 생성자를 호출하는데 사용된다.

-자식 클래스의 인스턴스를 생성하면 자식클래스의 멤버와 부모클래스의 멤버가 모두 합쳐진 하나의 인스턴스가 생성이 된다. 이때, 부모 클래스 멤버의 초기화 작업이 수행되어야 하기 때문에 자식 클래스의 생성자에서도 부모클래스의 생성자가 호출되어야 한다.

-최상위 클래스인 Object 클래스를 제외한 모든 클래스 생성자 첫줄에는 생성자 this() / super()가 호출되어야 한다. 없을 경우 컴파일러가 자동으로 super();를 생성자 첫줄에 삽입한다.

* 부모 클래스에 기본 생성자를 추가하거나, 자식클래스에서 부모클래스의 생성자를 호출할때 매개변수를 제대로 확인하여 super(매개변수)를 호출해준다.

 

 

 

참고 : https://dding9code.tistory.com/58

 

오버라이딩(overriding) + super( ) - JAVA

오버라이딩이란? 부모 클래스로부터 상속받은 메서드의 내용을 재정의(변경) 하는 것을 오버라이딩이라고 한다. 물론 상속받은 메서드를 그대로 사용해도 되지만 자식클래스에서 변경해야 하

dding9code.tistory.com


상속 (extends)

- 기존 클래스를 재사용하여 새로운 클래스 작성

- 코드 공통 관리 가능

   >>>  코드 추가, 변경 용이 / 적은 양으로 코드 작성 가능 / 프로그램 생산성, 유지보수 기여 / 객체지향적 개발 가능

 

class 자식클래스 extends 부모클래스 {}

class 손자클래스 extends 자식클래스 {}

  >> 손자클래스가 부모클래스로부터 상속받은 메소드/ 멤버변수까지 상속 받는다

 

- 생성자/ 초기화 블록 상속 x

- 메소드/ 멤버변수만 상속 o

- 자식 클래스의 멤버 개수 >= 부모 클래스

- 단일 상속만 허용

- 자식클래스는 따로 오버라이딩 할 필요 없음(필요에 따라 가능)

 

 

참고 : https://dding9code.tistory.com/57

 

상속(inheritance) - JAVA

상속이란? 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것입니다. 상속이라는 말 그대로 누군가에게 자신의 것을 물려주는 것을 의미합니다. 상속을 통해서 클래스를 작성하면 코드

dding9code.tistory.com


extends / implements 구분

- 부모는 선언만 하며, 반드시 자식이 오버라이딩을 해서 사용해야 한다.

- 여러개의 interface를 상속받을 수 있다.

 

 

 

참고 : https://wooono.tistory.com/261

 

[Java] extends, implements의 차이

상속(Inheritance)이란? 상속에 대해서 다루기 전에 우선, OOP(Object-Oriented Programming, 객체지향프로그래밍)가 무엇인지에 대해 알고 있어야한다. OOP는 다음과 같은 특징을 가지고 있다. 상속과 인터페

wooono.tistory.com