최근 커뮤니케이션을 할 때 프로그래밍적인 단어 선택에 어려움을 느껴 기초 개념부터 다시 공부하고자 묵혀 두던 자바의 정석이라는 책을 꺼내 다시 읽기 시작했다. 처음 자바를 공부했을 당시에 읽었을 때는 아무리 읽어도 이해가 되지 않던 것들이 지금 다시 읽어보니 이해가 쏙쏙 잘되었다. 오늘 공부한 내용을 정리하고자 한다.
자바는 객체 지향 언어이다. 여기서 뜻하는 객체 지향의 이론은 상속, 캡슐화, 추상화 개념을 중심으로 점차 구제적으로 발전하게 되었다. 객체 지향 언어의 특징을 3가지로 꼽자면
- 코드의 재사용성이 높다.
- 코드의 관리가 용이하다
- 신뢰성이 높은 프로그래밍을 가능하게 한다.
객체지향언어의 큰 장점 -> 코드의 재사용성이 높고 유지보수가 용이하다.
앞으로 상속, 다형성과 같은 객체지향개념을 학습할 때 재사용성과 유지보수 그리고 중복된 코드의 제거, 이 세 가지 관점에서 보면 보다 쉽게 이해할 수 있을 것이다.
클래스는 무엇이고 객체란 무엇일까?
클래스는 객체를 만들기 위한 설계도이고 객체는 설계도를 통해 생성된 것이라고 보면 될 것 같다. 그러니까 예를 들면 자전거라는 객체를 만들기 위한 자전거 설계도가 클래스인 것이다. 프로그래밍에서의 객체는 클래스에 정의된 내용대로 메모리에 생성된 것을 뜻한다.
클래스를 잘 만들어 놓기만 하면, 매번 객체를 생성할 때마다 어떻게 객체를 만들어야 할지 고민하지 않아도 된다.
객체와 인스턴스
클래스를 통해 객체가 만들어지는 과정을 '인스턴스화'라고 하고 그 결과 만들어지 객체를 '인스턴스'라고 한다.
인스턴스랑 객체랑 같은 의미라고 볼 수 있다.
객체의 구성 요소
객체의 구성 요소에는 속성과 기능이 있다. 자바에서는 이 속성을 '멤버변수'라고 하며 기능을 '메서드'라고 말한다. 자전거라는 객체의 속성이라고 하면 자전거 바퀴, 자전거 손잡이 등등이 있을 것이고 기능에는 달리는 기능, 멈추는 기능 등이 있을 것이다.
변수와 메서드
변수는 클래스 변수, 인스턴스 변수, 지역 변수 세 종류가 있다. 변수의 종류를 결정짓게 하는 중요한 요소는 변수가 선언된 위치이다. 멤버 변수는 클래스 변수와 인스턴스 변수가 해당되고 나머지는 지역 변수에 해당된다. static 제어자가 붙은 것이 클래스 변수, 붙지 않은 것이 인스턴스 변수, 메서드 안에 선언되어 있는 것이 지역 변수이다.
생성 시점 | 소멸 시점 | |
클래스 변수 | 클래스가 메모리에 로딩될 때 | 프로그램 종료될 때 |
인스턴스 변수 | 클래스의 인스턴스를 생성할 때 | 인스턴스가 소멸할 때 |
지역 변수 | 변수 선언문이 수행되었을 때 | 메서드가 종료될 때 |
각 변수의 할당되는 메모리 영역
- 클래스 변수는 데이터 영역(메소드 영역)에 할당된다. 데이터 영역은 프로그램 시작 시 할당되어 프로그램이 종료될 때 소멸된다.
- 인스턴스 변수는 힙 영역에 할당된다. 힙 영역은 프로그래머의 필요에 의해 동적으로 메모리가 할당과 소멸이 가능하다.
- 지역 변수는 스택 영역에 할당된다. 함수가 호출될 때 할당되어 함수의 호출이 완료되면 소멸된다.
'android' 카테고리의 다른 글
android webview 통신 webBridge (1) | 2023.12.26 |
---|---|
Domain 계층이란? (0) | 2023.05.02 |
[Kotlin] Geckoview tutorial (0) | 2022.12.19 |
디자인 패턴 MVC, MVP, MVVM (0) | 2022.11.10 |
Hilt (0) | 2022.10.19 |