TIL

TIL_20220908

번잔중 2022. 9. 8. 18:53

오늘 할 일

🙉 코드스테이츠 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