오버라이딩
: 상위 클래스에게 상속받은 메서드를 그대로 사용하기도 하지만, 하위 클래스 자신에 맞게 변경하는 것이다.
오버라이딩 조건
자손 클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와
- 이름이 같아야 한다.
- 매개변수가 같아야 한다.
- 반환타입이 같아야 한다.
한마디로 요약하자면 선언부가 완전히 일치해야 한다.
- 다만 접근 제어와 예외는 제한된 조건 하에서만 다르게 변경할 수 있다.
- 접근 제어자는 조상 클래스의 메서드보다 좁은 범위로 변경할 수 있다.
- 조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 있다.
super
super는 자손 클래스에서 상위클래스로부터 상속받은 멤버를 참조하는 데 사용하는 참조 변수이다.
super()
super()는 상위클래스의 생성자를 호출하는데 사용된다.
static import문
static import문을 사용하면 static 멤버를 호출할 때 클래스 이름을 생략할 수 있다.
import static java.lang.Math.random;
System.out.println(Math.random()); // 이 코드를
System.out.println(random()); // 이렇게 작성 가능
접근 제어자
접근 제어자는 멤버 또는 클래스에 사용되어, 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 한다.
- private : 같은 클래스 내에서만 접근이 가능하다
- default : 같은 패키지 내에서만 접근이 가능하다.
- protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근이 가능하다.
- public : 접근 제한이 전혀 없다.
접근 제어자를 사용하는 이유
- 외부로부터 데이터를 보호하기 위해서
- 외부에는 불필요한(내부적으로만 사용되는) 부분을 감추기 위해서
생성자의 접근 제어자
생성자에 접근 제어자를 사용함으로써 인스턴스의 생성을 제한할 수 있다.
++ 생성자가 private인 클래스는 다른 클래스의 상위클래스가 될 수 없다. 왜냐하면 하위클래스의 인스턴스를 생성할 때 상위클래스의 생성자를 호출해야만 하는데, 생성자의 접근 제어자가 private이므로 하위클래스에서 호출하는 것이 불가능하기 때문이다.
제어자의 조합
- 메서드에 static과 abstract를 함께 사용할 수 없다.
- 클래스에 abstract와 final을 동시에 사용할 수 없다.
- abstract 메서드의 접근 제어자가 private일 수 없다.
- 메서드에 private과 final을 같이 사용할 필요는 없다.
다형성
다형성은 객체지향개념의 중요한 특징 중 하나이다. 이를 좀 더 구체적으로 말하자면, 상위클래스 타입의 참조변수로 하위클래스의 인스턴스를 참조할 수 있도록 한다.
- 상위타입의 참조변수로 하위타입의 인스턴스를 참조할 수 있다.
- 반대로 하위타입의 참조변수로 상위타입의 인스턴스를 참조할 수 없다.
참조변수의 형변환
- 자손타입 → 조상타입 (Up-casting) : 형변환 생략 가능
- 자손타입 ← 조상타입 (Down-casting) : 형변환 생략 불가능
'Book > 자바의 정석' 카테고리의 다른 글
[자바의 정석] Chapter 8. 예외처리 (0) | 2023.07.14 |
---|---|
[자바의 정석] Chapter 7. 객체지향 프로그래밍 II - 추상메서드, 인터페이스 (0) | 2023.07.14 |
[자바의 정석] Chapter 6. 객체지향 프로그래밍 I - 오버로딩, 생성자 (0) | 2023.07.14 |
[자바의 정석] Chapter 6. 객체지향 프로그래밍 I - 클래스, 인스턴스, 메서드 (0) | 2023.07.14 |
[자바의 정석] Chapter 5. String 배열, 다차원 배열 (0) | 2023.07.14 |