본문 바로가기
Language/java

Java_Study 객체지향 프로그래밍 (변수와 메서드)

by gamxong 2022. 6. 29.

 

변수의 종류

 

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

 

1. 인스턴스 변수

 

독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있다.

인스턴스마다 고유한 상태를 유지해야하는 속성의 경우, 인스턴스 변수로 선언

 

2. 클래스 변수

 

모든 인스턴스가 공통된 저장공간을 공유하게 된다.

한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야 하는 속성의 경우, 클래스 변수 선언

 

3. 지역변수

 

메서드 내에서만 사용 가능, 메서드 종료되면 소멸되어 사용불가

 

인스턴스변수는 인스턴스가 생성될 때 마다 생성되므로 인스턴스마다 각기 다른 값을 유지할 수 있지만, 클래스 변수는 모든 인스턴스가 하나의 저장공간을 공유하므로, 항상 공통된 값을 갖는다.

 

 

메서드

 

 : 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것. (수학의 함수와 유사)

 

메서드를 사용하는 이유

 

1. 높은 재사용성

 

2. 중복된 코드의 제거

 

3. 프로그램의 구조화

 

 

JVM 메모리 구조

 

1. 메서드 영역

 - 프로그램 실행 중 어떤 클래스가 사용되면, 해당 클래스파일을 읽어 분석하여 클래스에 대한 정보를 이곳에 저장한다.

 - 클래스의 클래스 변수도 이 영역에 함께 생성됨.

 

2. 힙

 - 인스턴스가 생성되는 공간, 인스턴스변수들이 생성되는 공간

 

3. 호출스택

 - 메서드의 작업에 필요한 메모리 공간을 제공한다.

 - 메서드가 호출되면, 호출스택에 호출된 메서드를 위한 메모리가 할당됨, 이 메모리는 메서드가 작업을 수행하는 동안 지역변수

   들과 연산의 중간결과 등을 저장하는데 사용.

 - 작업을 마치면 할당된 메모리 공간은 반한되어 비워진다.

 - 호출스택 제일 위에 있는 메서드가 현재 실행 중인 메서드이다.

 - 아래에 있는 메서드가 바로우 위의 메서드를 호출한 메서드이다.

 

기본형 매개변수와 참조형 매개변수

 

기본형 매개변수 변수의 값을 읽기만 할 수 있다.
참조형 매개변수 변수의 값을 읽고 변경할 수 있다.

 

반환타입이 '참조형'이라는 것은 메서드가 '객체의 주소'를 반환한다는 것을 의미한다.

 

 

 

클래스 메서드(static 메서드)와 인스턴스 메서드

 

클래스 영역에 선언된 변수를 멤버변수

 

멤버변수 중에 

메서드 앞에 static  ▶  클래스 메서드

없으면                     인스턴스 메서드

 

 

1. 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통으로 사용하는 것에 static을 붙인다.

 

2. 클래스 변수는 인스턴스를 생성하지 않아도 사용할 수 있다.

 

3. 클래스 메서드는 인스턴스 변수를 사용할 수 없다.(금지한다)

 

4. 메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려한다.

 

 

 

클래스 멤버와 인스턴스 멤버간의 참조와 호출

 

※ 클래스멤버가 인스턴스 멤버를 참조 또는 호출하고자 하는 경우에 인스턴스를 생성해야 한다.

 

인스턴스 멤버가 존재하는 시점에 클래스 멤버는 항상 존재하지만,
클래스멤버가 존재하는 시점에 인스턴스 멤버가 존재하지 않을 수 있다.

댓글