공부기록/유닛 회고

S1U7 [Java] 객체지향 프로그래밍 기초 회고

또리머 2022. 11. 12. 14:46
반응형

[클래스와 객체]

🌄 쉽게 말해 클래스는 설계도. 객체는 그런 클래스를 바탕으로 생성된다.

new라는 키워드를 통해 클래스를 인스턴스화 할 수 있다. 그렇게 생겨난 객체는 인스턴스라고 부른다.

 

JVM이 CPU로부터 할당 받아 관리하는 데이터 영역에 대해 더 잘 알 수 있는 유닛이었다. 그래서 static과 인스턴스 멤버의 생성시점과 그로 인한 사용시점의 차이를 더 잘 이해할 수 있었다. 막연하게 static은 메모리에 먼저 적재된다 라고만 알고 있었는데, 런타임 전 이미 Runtime data area에, 그 중 static 영역에 이미 적재되는 것이었다. 알고 있던 것에서 한층 깊은 공부를 하니까 엄청 재미있었다.


[필드와 메서드]

🌄 속성을 말해주는 필드와 기능을 말해주는 메서드.

생성 시점과 사용 가능 장소, 시점에 따라 변수는 인스턴스, 클래스(static), 지역 변수로 나뉜다.

정의된 메서드를 호출할 때 알맞은 인자를 넣어줘야 한다. 같은 메서드명에 인자의 수가 다르거나 반환 타입이 다르다면 메서드 오버로딩 되어있는 것이다. 이 경우 여러 경우의 수를 해결할 수 있다.

 

특별히 어려울 게 없었던 챕터이다. static 변수와 instance 변수의 사용을 설명하기 위해 많은 예시를 보여주고 같이 실습하게 해준 좋은 세션이 있었다!


[생성자]

🌄 생성자는 인스턴스가 생성될 때 인스턴스 변수들을 초기화해준다. 생성자도 오버로딩이 가능하고, 기본 생성자를 작성하지 않으면 자동 생성되지만, 다른 생성자를 작성해주었을 때 기본 생성자는 자동생성되지 않는다.

this는 힙 영역에 올라간 '나', 즉 객체 자신을 가리킨다. 나를 3인칭으로 부른다고 생각하면 좋다. 주로 매개변수와의 이름 구분을 위해 사용한다. 반면 this()는 현재 객체의 다른 생성자를 호출해준다. 이는 생성자 안에서만 사용되어야 하고, 가장 첫 줄에서만 쓸 수 있다.

 

생성자 영역에서 학습하고 실습하면서 가장 많이 느낀 부분은 내가 지금껏 생성자를 사용했던가? 이다. 곰곰히 생각해보니 Spring framework를 사용하면서 생성자는 뒤로 하고 항상 필드 주입만 주구장창 했던 것 같다. 무한 Autowired,, 아니면 setter사용.? 스프링을 오래 해서 그런가? 기억이 잘... 뭔가 잘못된 사용을 하고 있던 것 같다. 생성자를 작성하고 사용하는 게 정말 익숙하지 않다. 그래서 생성자로 의존성 주입을 해준다는 것도 감이 안 왔는데 실습을 통해서 무수히 많은 생성자 주입을 해주고 나니 이제서야 흐름이 조금 잡힌다. 역시 기초부터 잘 잡아주고 가야하는 것 같다.ㅎㅎ 사실 심화 실습이 많이 남아있는데 꾸준히 한 번 실습 프로그램들을 작성해보고싶다.


[내부 클래스]

🌄 말 그대로 클래스 내부에 있는 클래스이다. 연관된 클래스들을 연결해주어 클래스 필드에 접근이 한층 쉬워지고 코드도 간결해진다. 캡슐화에도 유용하다.

 

메서드 안에서 지역 내부 클래스를 작성할 수 있다는 사실을 알게 되었다. 이너 클래스를 사용할 때가 있긴 했는데 그 때 컴파일하면 class파일이 엄청 이상하게 생성되고 이래서 혼란스러웠던 기억이 있다. 선배가 짜둔 코드였는데 움 그냥 클래스를 필드로 사용했꾸나.. 이렇게 쓰면 되는구나 하고 깊이 알아보지 않았다. 여기서 또 자기반성 타임ㅎㅅㅎ;; 라이브 세션 때는 계속 "outer, inner, static, 외부 인스턴스의 내부 인스턴스의 ..." 뭔가 구렁텅이에 빠진 기분이었는데 직접 코드 쳐보면서 실습해보면 이해가 빨랐다.


🛴 Unit 7. [Java] 객체지향 프로그래밍 기초를 마치고!

굉장히 흥미로웠던 유닛이다ㅎㅎ 사실 Java 기초 문법은 제어문/배열에 가서야 재미있고... 그랬는데(😓) 객체지향 시작하면서 필기도 열심히 하고 세션에도 엄청 집중하게 되었다. 그래서 아~ 너무 재미있다 나 이래서 자바 좋아했지 하는 생각도 했다ㅋㅋ. 소중한 시간이었다. 매번 느끼는 거지만 이번 부트캠프를 통해 한층 더 깊은 지식을 쌓아가고 있는 것 같다. 그래서 뿌듯하고 기분좋고, 더 열심히 하고 싶어진다. 그리고 TIL에도 기록했지만 이 때 이너 클래스 때문에 HashMap 클래스를 잠시 까봤는데 눈 앞이 조금 어질했었다. 그리고 시무룩해지기도 했다. 난 여전히 이런저런 클래스를 열어보기에는 멀었구나. 하지만 컬렉션까지 열심히 배운 지금(회고가 조금 늦었다ㅎㅎ) 해볼 수도 있지 않을까 하는 생각이 문득 든다. 뭐가 됐건 직접 많이 해보려고 한다. 객체지향 기초 회고 끝.

반응형