| 1. Basics | 클래스, 객체, 변수, 메서드 // 생성자, 초기화 |
| 2. Advanced | 상속, 오버라이딩 // package, import, modifiers, 다형성 // 추상클래스, interface, 내부클래스 |
| 2. 오버라이딩(Overriding) | 1. 오버라이딩 2. 오버라이딩의 조건 3. 오버로딩 vs 오버라이딩 4. super 참조변수 5. super()-상위 클래스의 생성자 호출하기 |
2.1 오버라이딩
-상위 클래스로부터 받은 메서드가 있는 경우에만 가능
-하위 클래스에서도 (하위 클래스에 맞게 변경하여) 똑같은 것을 다시 정의함
2.2 오버라이딩의 조건
1)선언부가 같아야 함(이름, 매개변수, 리턴 타입)
2)접근제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없음(to be continued...)
3)조상클래스의 메서드보다 많은 수의 예외를 선언할 수 없음(to be continued...)
-인스턴스 메서드를 static 메서드로 또는 그 반대로 변경할 수 없음
(*static 메서드는 오버라이딩이라고 안 함 instance 메서드를 오버라이딩이라고 함)
2.3 오버로딩 vs 오버라이딩
-오버로딩: 내 클래스에, 동일한 이름의 새로운 메서드 정의 (매개변수가 다름)(하나의 class 안)
-오버라이딩: 상위클래스에서 계승받은 메서드와 동일한 이름의 새로운 메서드를 정의(두 개 이상의 class에 대한 문제)

2.4 super 참조변수
- super
하위 클래스에서 상위 클래스로부터 계승받은 멤버를 참조하는 참조변수
상위, 하위 클래스에 있는 이름이 같은 멤버 변수를 구별 - 상위 클래스가 있을 때 멤버 변수 접근 방법
-int i; 가 상위클래스에만 있으면: i, this.i 로 접근
-int i; 가 하위클래스에만 있으면: "
-int i;가 상, 하위 클래스 모두 있으면:
ㄴi라고 하면 하위 클래스 i가 접근됨
ㄴsuper.i 라고 하면 상위 클래스 " - 하나의 child 객체에 두 개의 getCoordinates() 존재
-상위 클래스의 getCoordinates()는 super.getCoordinates()로 접근
(super.을 빼면 this.이 붙어있다는 것과 같고 이를 '재귀호출'이라 함.
2.5 super() - 상위 클래스의 생성자 호출하기
- 상위 클래스 멤버의 초기화 - 도입



사진(super()사용)처럼 super(x,y); 작성 시, 상위클래스인 Point의 생성자를 하위클래스인 ColorPoint의 생성자에서 호출할 수 있음
- 상위 클래스 멤버의 초기화 - super() 사용시 주의사항
하위 클래스의 생성자의 반드시 첫 줄에서 상위 클래스의 생성자 호출
Object 클래스 제외한 모든 클래스의 생성자 첫 줄에는 상위 클래스 생성자를 호출해야함
*누락 시, 컴파일러가 자동으로 super();를 생성자 첫 줄에 추가 (상위 클래스 생성자가 먼저 실행됨)
**누락 시, 상위 클래스에 인자 없는 생성자가 하나도 없으면 문제? -> 인자가 있는 생성자들만 있는 상태, 그런데 인자 있는 생성자는 컴파일러가 자동으로 추가해주지 않음



'CSE > CP1 이론' 카테고리의 다른 글
| CP1_07.객체지향 프로그래밍_Advanced_내부 클래스 (0) | 2024.06.17 |
|---|---|
| CP1_07.객체지향 프로그래밍_Advanced_파일과 예외처리 (0) | 2024.06.17 |
| CP1_07. 객체지향프로그래밍_Advanced_1. 계승 (0) | 2024.06.11 |
| CP1_06. 객체지향프로그래밍_Advanced_6. 다형성 (0) | 2024.06.10 |
| CP1_08. 객체지향프로그래밍_Advanced_인터페이스 (0) | 2024.06.10 |