오늘 할 일
🙉 코드스테이츠 15일차
- 객체지향프로그래밍 심화 복습
- 블로깅
- 1일 1커밋
오늘 배운 것
💫 객체지향프로그래밍 심화 복습
다형성 - 업캐스팅, 다운캐스팅 복습
class Soldier {
public void soldierInfo() {
System.out.println("나는 대한민국 군인입니다.");
}
}
class Army extends Soldier{
public void soldierInfo() {
System.out.println("나는 대한민국 육군입니다.");
}
}
class Navy extends Soldier {
public void soldierInfo() {
System.out.println("나는 대한민국 해군입니다.");
}
}
public class SoldierTest {
public static void main(String[] args) {
// 다운캐스팅이 가능한 경우(업캐스팅 -> 다운캐스팅)
Army army = new Army();
Soldier soldier = (Soldier) army; // 하위 클래스인 Army의 참조 변수 army를 상위 클래스인 Soldier로 타입 변환(업캐스팅)
Army army1 = (Army) soldier; // 업캐스팅한 참조 변수 soldier를 Army로 다운캐스팅하는 경우는 가능하다.
// 다운캐스팅이 불가능한 경우(곧바로 다운캐스팅)
Soldier soldier1 = new Soldier();
// Army army2 = (Army) soldier1; // 업캐스팅이 선행되지 않았기 때문에 에러가 발생한다.
// army2.soldierInfo();
// 타입 변환이 불가능한 경우(상속 관계가 아닐때)
// Navy navy = (Navy) army; // 상속 관계가 아니기 때문에 에러 발생
army.soldierInfo();
soldier.soldierInfo();
army1.soldierInfo();
soldier1.soldierInfo();
}
}
// 출력 결과
나는 대한민국 육군입니다.
나는 대한민국 육군입니다.
나는 대한민국 육군입니다.
나는 대한민국 군인입니다.
정리
- 참조 변수의 타입 변환에서 전제 조건은 '상속 관계'이다. 상속 관계가 아닌 클래스는 타입 변환을 고려할 필요가 없다.
- 업캐스팅(하위 클래스 → 상위 클래스)은 선언 시 생략 가능하고, 별다른 조건 없이 상속 관계만 성립하면 가능하다.
- 다운캐스팅(상위 클래스 → 하위 클래스)은 선언을 필수적으로 해야하고, 업캐스팅이 된 상위 클래스만 가능하다. 업캐스팅이 선행되지 않으면 오류가 발생한다.
CodeUp 기초 100제 완료
코드업 사이트에서 자바 언어에 빠르게 익숙해지기 위해 기초 100제를 완료하였다.
GitHub - chaning49/algorithm: 코딩테스트를 위한 알고리즘 공부
코딩테스트를 위한 알고리즘 공부. Contribute to chaning49/algorithm development by creating an account on GitHub.
github.com
느낀점
- 한 번에 많은 내용을 빠르게 배우다보니 확실하게 정리할 수 있는 날을 준 것 같다. 그 덕분에 밀렸던 학습을 차근차근 해나갔다.
- 노션에 정리하기에도 내용이 꽤 많아서 골치가 아팠는데, 어느 정도 줄여나가서 기분이 좋다. 빠르면 더 좋겠지만 천천히 하나씩 '꾸준히' 해결해 나갈 생각이다.
- GitHub를 어떻게 써야하는 것인지 몰라서 이전까지 고통이었다. 하지만 배우고나서 하나씩 기능을 써보니 차츰 익숙해지고 있다.
내일 할 일
🌖 추석 연휴 1일차
- 백준 알고리즘 문제 풀기
- 1일 1커밋
'TIL' 카테고리의 다른 글
TIL_20220910 (0) | 2022.09.10 |
---|---|
TIL_20220909 (0) | 2022.09.09 |
TIL_20220907 (0) | 2022.09.07 |
TIL_20220906 (0) | 2022.09.06 |
TIL_20220905 (2) | 2022.09.05 |