😌2022.09.06

일일 회고 27일차

할일 및 한일

경험 및 배움

이것이 자바다 7장(상속) 정리 마무리

오늘 7장(상속)을 마무리 하면서 몇 가지 몰랐던 개념들을 알게 되었다.

우선, 클래스에서 강제 타입 변환을 할 때는 자식 타입이 부모 타입으로 자동 타입 변환이 된 후에 다시 자식 타입으로 변환하려 할 때만 강제 타입 변환이 가능하다.

먼저 클래스에서 부모 타입에서 다시 자식 타입으로 강제 변환 하려는 이유는, 부모 타입으로 타입 변환이 되었을시에는 부모 타입에 선언된 필드와 메소드만 사용이 가능하다. 그래서 자식 타입에 선언된 필드와 메소드를 사용하려면, 다시 자식 타입으로 강제 타입 변환을 해주어야 한다.

이렇게 강제 타입 변환을 할 때는 매개값이 어떤 타입의 객체인지 instanceof 연산자를 통해 먼저 객체의 타입을 확인 후, 강제 타입 변환을 해주어야 오류도 발생할 확률을 줄이고 타입 변환을 안전하게 할 수 있다.

또한 추상 클래스, 메소드의 개념도 알 수 있었다. 그 전까지는 대략적으로 공통적인 것들을 추상 클래스로 선언하고, 자식 클래스에서 오버라이딩해서 구현하는 방식이라고 생각하였다.

추가적으로 알게 된 것들은 추상 클래스는 new 연산자를 통해 객체를 생성시키지 못한다는 점이다. 또한 추상 클래스를 쓰는 목적으로, 실체 클래스들의 공통된 필드와 메소드를 통일하는 목적, 그리고 실체 클래스를 작성할 때 시간을 절약하려는 목적이 있다.

자세한 내용은 notion에 정리를 해놓았다.

Java 로그인 프로그램 구현 이슈 체크 및 해결해보기

우선 몇 일 전에 로그인 프로그램 구현을 거의 마무리하였는데, 오늘 세미나 멘토님이 이슈를 작성하여 코멘트를 남겨주셨다.

오늘은 시간이 늦어 하나의 이슈만 해결해보고, 목적을 찾아보았다.

첫 번째 이슈는 Scanner를 객체를 만들어 사용 후, 사용이 close() 메소드로 반환을 시켜줘야 한다는 점이었다.

나는 Scanner를 사용을 하면 close() 메소드로 반환을 해줘야한다는 것조차 몰랐는데, 찾아보니 그렇게 해야된다고 하였다.

그 이유는 우선 Java는 가비지 컬렉터가 존재해서 메모리 점유를 자동으로 해제하는 기능이 있다. 하지만 대상은 사용중이지 않은 데이터가 대상이여서, 애초에 Scanner로 만든 객체는 한번 열어 놓으면 계속 사용중인 데이터로 파악이 되기 때문에 가비지 컬렉터의 대상에 포함이 되지 않는다고 한다.

close() 메소드를 사용하는 이유는 가비지 컬렉터와는 별개로, OS 자원을 되돌려줘야 하기 때문이다. 되돌리지 않으면 Scanner 객체는 OS에서 제공한 표준 입력을 계속 붙잡고 있게 되어 자원을 소모하고 있다고 한다.

개선 및 목표

  • nest.js 세미나가 이번주부터는 게시판 생성은 각자 끝내고, 공식 도큐먼트를 보고 발표 준비를 하고 공부를 하기로 하였다. 따라서 게시판 생성도 영상을 보며 혼자 끝내야 하니 분발하자.

Last updated