이번주 며칠동안 TIL을 적을 여유가 없었다.
알고리즘 기초 퀴즈들 및 자바 객체지향에 대해 흡수하느라 정신없이 한 주가 지나가고 있다. 내일부터 주특기(스프링)에 대해 기초지식 입문이 시작된다. (기초가 아닐거라고 확신함..)
아직도 감이 안잡히고 갈 길이 멀었지만, 기본내용들을 정리하며 머리에 넣어야겠다.
클래스 | 객체 |
---|---|
제품 설계도 | 제품 |
TV 설계도 | TV |
붕어빵 기계 | 붕어빵 |
**인스턴스화**
클래스 -----------------> 인스턴스(객체)
또한, 객체의 구성요소에는 속성과 기능이 있는데 아래와 같이 정의 할 수 있다.
- 속성(property): 멤버변수, 특성, 필드, 상태
- 기능(function): 메서드, 함수, 행위
TV로 예를 들자면,
속성: 크기, 길이, 높이, 색상 ,볼륨, 채널 등
class TV {
String color; //색깔
boolean power; //전원상태
int channel; //채널
}
기능: 켜기, 끄기, 볼륨 높이기, 볼륨 낮추기, 채널 변경하기 등
void power() { power = !power; }
void channelUp() { channel++; }
void channelDown() { channel--; }
클래스명 변수명; // 클래스의 객체를 참조하기 위한 참조 변수를 선언
변수명 = new 클래스명 (); //클래스의 객체를 생성 후, 참조변수에 저장
Tv t; // TV클래스 타입의 참조변수 t를 선언
t = new Tv(); //TV인스턴스 생성 후, 생성된 TV인스턴스의 주소를 t에 저장
인스턴스는 참조변수를 통해서만 다룰 수 있으며, 참조변수의 타입은 인스턴스의 타입과 일치해야한다.
하기 표는 비객체지향적 코드와 객체지향적 코드를 비교한 것이다.
비객체지향적 코드 | 객체지향적 코드 |
---|---|
int hour1, hour2, hour3; | Time t1 = new Time(); |
int minute1, minute2, minute3; | Time t2 = new Time(); |
float second1, second1, second1; | Time t3 = new Time(); |
int [] hour = new int[3]; | Time[]t = new Time[3]; |
int [] minute = new int[3]; | Time[0]t = new Time[]; |
int [] second = new float[3]; | Time[1]t = new Time[]; |
{
int iv; //인스턴스변수
static int cv; //클래스변수(static변수, 공유변수)
void method()
{
int lv = 0; //지역변수
}
}
**1. 인스턴스변수(instance variable)**
: 클래스 영역에 선언되며, 클래스의 인스턴스를 생성할때 만들어진다.
그렇기 때문에 인스턴스 변수의 값을 읽어오거나 저장하기 위해서는 먼저 인스턴스를 생성해야한다.
**2. 클래스변수(class variable)**
: 클래스 변수를 선언하는 방법은 인스턴스변수앞에 static을 붙이기만 하면 된다.
클래스 변수는 모든 인스턴스가 공통된 저장공간(변수)를 공유한다.
**3. 지역변수(local variable)**
: 메서드 내에 선언되어 메서드 내에서만 사용 가능하며,
메서드가 종료되면 소멸되어 사용 할 수 없다. for문 또는 while문의 블럭 내에서
선언된 지역변수는 지역변수가 선언된 {}블럭에서만 사용 가능하다.