슈퍼 클래스 생성자
super()
: 서브 클래스에서 명시적으로 슈퍼 클래스의 생성자 선택 호출
- super(parameter);
- 인자를 이용하여 슈퍼 클래스의 적당한 생성자 호출
- 반드시 서브 클래스 생성자 코드의 제일 첫 라인에 와야 함
캐스팅
: 변수가 원하는 정보를 다 갖고 있는 것
int a = 0.1; // 에러 발생 x
int b = (int) true; // 에러 발생 o, boolean은 int로 캐스트 불가
캐스팅이 필요한 이유
1) 다형성: 오버라이딩 된 함수를 분리해서 활용할 수 있다.
2) 상속: 캐스팅을 통해 범용적인 프로그래밍이 가능하다.
업캐스팅
: 묵시적 형변환, 캐스팅이 자동으로 발생
서브 클래스가 슈퍼 클래스로 변환되는 것
업캐스팅은 클래스 명 생략 가능
Parent p = new Child();
// Parent를 상속받은 Child는 Parent의 속성을 포함하고 있기 때문에
// (Parent) new Child()할 필요가 없음
업캐스팅을 사용하는 이유
=> 상속을 받은 서브 클래스가 몇 개이든 하나의 인스턴스로 묶어서 관리하기 위함이다.
하나의 인스턴스(슈퍼클래스)로 서브 클래스들을 전부 관리할 수 있다.
슈퍼클래스로 관리하면 자바의 다형성(메서드를 각각 다른 형태로 사용)을 이용해 슈퍼클래스를 여러가지 클래스로 만들 수 있다.
다운캐스팅
: 명시적 형변환, 캐스팅할 내용을 적어줘야 하는 경우
슈퍼 클래스가 서브 클래스로 변환되는 것
Parent p = new Child();
Child c = (Child) p;
// 다운캐스팅은 업캐스팅이 발생한 이후에 작용한다.
'Backend > Java' 카테고리의 다른 글
[Java] 추상 클래스 vs 인터페이스 and 추상 메서드 (0) | 2023.06.08 |
---|---|
[Java] 오버라이딩 vs 오버로딩 (0) | 2023.06.08 |
[Java] 메소드 (0) | 2023.05.22 |
[Java] 접근 제한자 (0) | 2023.05.22 |
[예제] 5개의 정수를 입력받아 합계와 평균을 출력 (for each 사용) (0) | 2023.04.15 |