PREVIEW
구조체 → 클래스
WHY? 지역 변수를 사용하는 것이 좋음, BUT 공유 필요
c언어 → **전역 변수
**로 공유
자바 → 공유되는 데이터와 함수를 묶어서 **클래스
**로 공유
⇒ 해당 클래스를 다른 곳에서도 사용하기 위해 조금만 수정하면 OK
상속
: 부모 클래스에서 만들어진 필드와 메서드를 자식 클래스가 물려 받음
→ 부모 클래스의 기능은 물론 나만의 간단한 기능을 추가 가능
⇒ 클래스의 간결화 : 간결한 자식 클래스 (동일한 특성 재정의 X, 중복 X)
⇒ 클래스 관리 용이 : 클래스들의 계층적 분류
⇒ 소프트웨어 생산성 향상 : 클래스 재사용과 확장 용이
자바의 상속
cf) 다운캐스팅을 완벽하게 활용하면 고급 기술자가 될 수 있다.
→ A, B, C를 모두 상속 받기 위해서
A → X (A+B) →Y (A+B+C)
(or 하나의 인터페이스로 만들어서 다중 상속 처리 가능)
→ final 키워드가 붙어있으면 상속 불가능
→ 모든 클래스는 이를 상속
(클래스에 없어도 오류 나지 않는 함수 → 해당 클래스에 존재)
※ toString() → 작성법
: 클래스의 설명으로 재정의 ← 오버라이딩 할 때
클래스의 설명, 값 등을 담아 모든 클래스에 정의
상속 관련 문제는 최소 3개의 파일 필요 (수퍼 클래스, 서브 클래스, MAIN)
예제) 포인트 클래스와 컬러 포인트를 만들 수 있어야 한다. → Color Point Ex.
상속과 protected 접근 지정자
수퍼 클래스의 private 멤버 변수 접근 방식
→ 수퍼 클래스의 get(), set() 등의 멤버 함수를 통해 접근
⇒ 외부에 해당 클래스에 변수의 구성 등을 보여주지 않기 위해 보호
생성자
new에 의해 서브 클래스의 객체 생성
호출 순서
서브 클래스의 생성자가 먼저 호출
→ 서브 클래스의 생성자 실행 전, 슈퍼 클래스 생성자 호출
실행 순서
슈퍼 클래스 생성자가 실행
→ 서브 클래스의 생성자 실행
⇒ 호출은 서브 클래스가 먼저 호출/실행은 수퍼 클래스가 먼저 실행
슈퍼 클래스의 생성자를 선택하지 않은 경우 ⇒ 기본 생성자 실행
super()로 생성자 선택 ⇒ 해당 생성자 실행
: 인자를 이용하여 슈퍼 클래스의 올바른 생성자 호출
반드시 서브 클래스 생성자 코드의 제일 첫 문장에 와야 한다
매개 변수의 개수와 타입이 일치해야 한다.
※ this()와 super() 비교
공통점) 생성자를 호출할 때 사용
생성자 코드의 첫번째 문장이어야 한다.
차이점) this() ← 같은 클래스 내에서 자기의 다른 생성자 호출
super() ← 상속 받는 클래스 내에서 슈퍼 클래스의 생성자 호출
( 슈퍼 클래스의 생성자를 선택하기 위해)
시험 문제) 생성자가 수퍼 클래스의 생성자를 선택하는 과정