[CH6. 객체지향프로그래밍1] 변수와 메서드

3. 변수와 매서드

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

변수의 종류 선언위치 생성시기
클래스변수 클래스 영역 클래스가 메모리에 올라갔을 때
인스턴스 변수 클래스 영역 인스턴스가 생성되었을때
지역변수 클래스 영역 이외의 영역 (메서드, 생성자, 초기화 블럭 내부) 변수 선언문이 수행되었을때
1
2
3
4
5
6
7
8
class Variables{
int iv; //인스턴스 변수
static int cv; //클래스 변수(static 변수, 공유변수)

void method(){
int iv; // 지역변수
}
}
  1. 인스턴스 변수
    • 클래스 영역에 선언, 인스턴스 생성때 만들어짐
  2. 클래스 변수
    • 인스턴스 앞에 static을 붙임.
      한 클래스의 모든 인스턴스들이 공통적 값을 유지해야 되는 경우 사용.
      public을 붙이면 프로그램 내 전역에서 사용가능
  3. 지역 변수
    • 매서드 내 선언. 메서드 내에서만 사용가능. 메서드 종료시 소멸.

3.2 클래스변수와 인스턴스 변수

1
2
3
4
5
6
 class Card {
String kind; // 카드 무늬 - 인스턴스변수
int number; // 카드 숫자 - 인스턴스 변수
static int width = 100; // 카드 폭 - 클래스 변수
static int height = 250; //카드 높이 -클래스 변수
}

인스턴스 변수는 인스턴스가 생성될 때마다 각기 다른 값을 유지,
클래스 변수는 모든 인스턴스가 하나의 저장공간을 공유해서 항상 공통된 값 가짐

3.3 메서드

  • 하나의 메서드는 되도록 하나의 기능만 수행하도록 하는것이 좋다.
  • 반복적으로 수행되야 하는 여러 문장을 하나의 메서드로 정의해놓으면 좋다
  • 관련된 여러 문장을 하나의 메서드로 만들어 놓는 것이 좋다.

3.4 return 문

  • 메서드가 정상적으로 종료되는 경우
    1. 메서드의 블럭{}내의 마지막 문장을 수행했을 때
    2. 메서드의 블럭{}내에 있는 문장을 수행중 return 문을 만났을때.
  • return 문은 실행중인 메서드를 종료 후 호출 메서드로 되돌아감
    1. 반환값이 없는 경우 : return;
    2. 반환값이 있는 경우 : return 반환값;

3.5 메서드의 호출

참조변수.메서드이름();
참소변수.메서드이름(값1, 값2, ..);

3.6 JVM의 메모리 구조


  1. Method Area(메서드영역)
    클래스/데이터

  1. Call Stack(호출스택)
    Main

  1. Heap(힙)
    인스턴스

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

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

3.8 재귀호출

f(n) = n* f(n-1)

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

  1. 클래스 설계할 때, 멤버 변수 중 모든 인스턴스에 공통적으로 사용해야하는 것에 static 을 붙인다.
  2. 클래스 변수(static변수)는 인스턴스를 생성하지 않아도 사용할 수 있다.
  3. 클래스 메서드는 인스턴스 변수를 사용할 수 없다.
  4. 메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려한다.

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

인스턴스 멤버가 존재할때는 클래스멤버는 항상 존재하지만,
클래스맴버가 존재하는 시점에 인스턴스멤버가 존재할수도 있고 없을수도 있음.

댓글

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×