기본 개념 : 자바는 단일 상속, 상속장점: 간결화, 관리 용이, 생산성 향상
상속횟수는 무제한이나, 2~4단계 상속이 적절하며 기능 명시를 위해 인터페이스와 함께 사용한다.
상속의 최상위 조상 클래스는 java.lang.Object 클래스
1. 상속클래스들의 생성자 호출순서
new에 서브클래스의 객체가 생성될 때, 슈퍼클래스에 의해 생성자와 서브클래스 생성자가 순차적으로 모두 실행된다. 호출순서는 서브클래스의 생성자 먼저, 이후에 슈퍼클래스의 생성자가 호출된다. 이와 달리, 실행 순서는 슈퍼클래스의 생성자가 먼저 실행된 후 서브클래스의 생성자가 실행된다. 이때, 사용자가 명시하지않으면 기본생성자가 자동 생성되고, 상위생성자가 자동호출된다. (코드에 없다면, 맨 윗줄에 super()를 컴파일러가 자동으로 추가한다.)
2. 객체연산자 : instanceof
Instanceof 연산자는 레퍼런스가 가리키는 객체의 타입을 식별한다. (상위호환도 가능)
[ SYNTAX ] 객체레퍼런스 instanceof 클래스타입
연산 결과, true/false의 Boolean 값을 리턴한다. 이를 통해, 어떤 클래스로 만들어진 객체인지 비교가 가능하며, 인자가 업캐스팅[1] 혹은 다운캐스팅[2] 되었을 때도 비교 가능하다. 즉, 하위객체들은 상위 호환이 가능하므로 상위 객체 타입으로 하위객체를 참조할 수 있다. 업캐스팅된 레퍼런스 변수가 가리키는 객체의 타입을 알 수 있다.
[1] 업캐스팅(UpCasting) : 서브클래스 객체를 슈퍼클래스 타입으로 자동 타입변환. 업캐스팅된 레퍼런스는 객체 내에 슈퍼클래스의 멤버만 접근 가능하다. 바로 위의 슈퍼클래스가 아니라, 상속계층의 상위에만 있다면 가능. (임의로 슈퍼슈퍼클래스라고하자.) 자식이 할머니 클래스로 업캐스팅 가능하다는 의미이다.
[2] 다운캐스팅(DownCasting) : 업캐스팅시킨 슈퍼클래스 객체를 서브 클래스타입으로 변환 (강제변환)
추상클래스 vs 인터페이스 :
SAME : 설계/구현 분리가능, 다형성 실현
단. 둘다 객체를 생성할 수 없고, 상속 및 상위참조용으로만 사용한다.
DIFFERENT
추상(상수변수 필드 모두 포함, 추상메소드, 일반 메소드 포함)
인터페이스(변수 필드 포함 X, 상수메소드,추상,일반,default,static메소드 모두 포함, protect지정선언 불가, 다중상속지원)
'컴퓨터공학과 > Java 1 & 2' 카테고리의 다른 글
| [문제해결] 이클립스 패키지탐색기에서 파일이 열리는 경우 (0) | 2025.05.17 |
|---|---|
| JAVA 프로그래밍 및 실습 I - [과제#6] String클래스 조사 및 사용하기(Summary포함) (0) | 2025.05.17 |
| [문제해결] Amateras, Eclipse, 생성자 (0) | 2025.05.10 |
| [문제해결] ECLIPSE 인코딩 오류 UTF_8 (0) | 2025.05.09 |
| WEEK7 . chap05-class (0) | 2025.04.15 |