Programming/Java

[JAVA] 자바의 클래스

Supreme_YS 2021. 10. 8. 15:49

남궁성님의 자바의 정석을 기반으로 작성했습니다.


- 클래스의 정의

* 설계도

* 데이터 + 함수 

* 사용자 정의 타입

 

1. 변수 : 하나의 데이터를 저장할 수 있는 공간

2. 배열 : 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간

3. 구조체 : 서로 관련된 여러 데이터 (종류 관계 X)를 하나로 저장할 수 있는 공간

4. 클래스 : 구조체 + 함수, 즉 서로 관련있는 데이터 변수들과 관련있는 함수들의 묶음

// 비객체지향적인 코드
int hour = 12;
int minute = 25;
int second = 30;

// 객체지향적인 코드
class Time {
	int hour;
    int minute;
    int second;
}

Time t = new Time();
t.hour = 12;
t.minute = 25;
t.second = 30;

- 선언 위치에 따른 변수의 종류

클래스는 클래스 영역 + 메서드 영역이라는 2가지 영역으로 구분되어 있습니다. 클래스 영역에는 IV(Instance Variable, 인스턴스변수)라는 변수, 메서드 영역에는 LV(Local Variable, 지역변수)라는 변수로 이루어져있습니다. CV(Class Variable, 클래스 변수)는 static + IV형태로 사용합니다.

변수의 종류 선언 위치  생성시기
클래스 변수 클래스 영역 클래스가 메모리에 올라갈 때
인스턴스 변수 인스턴스가 생성되었을 때
지역 변수 메서드 영역(클래스 영역 이외) 변수 선언문이 수행되었을 때

* IV : 인스턴스변수, 클래스 영역 -> IV가 여러개 묶여놓으면 객체

* CV : 클래스변수, 클래스 영역, static + IV

* LV : 지역변수, 메서드 영역

* 클래스 영역 : 선언문만 가능 (변수 선언, 메서드 선언 등)

 

class Variables { // 클래스 영역 start
	int iv ; // 인스턴스 변수
    static int cv; // 클래스 변수
    
    void method()
    { // 메서드 영역 start
    	int lv = 0; // 지역 변수
    }  // 메서드 영역 end
} // 클래스 영역 end