※ 이 글은 자바의정석을 참조하였다.
1. 선언위치에 따른 변수에 종류1
변수의종류 | 선언위치 | 생성시기 |
---|---|---|
클래스변수 | 클래스영역 | 클래스가 메모리에 올라갈 때 |
인스턴스변수 | 클래스 영역 | 인스턴스 생성시 |
지역변수 | 메서드 영역 | 변수 선언문 수행시 |
2. 선언위치에 따른 변수의 종류2
- 인스턴스변수
- 각 인스턴스의 개별적인 저장공간, 인스턴스마다 다른값 저장 가능
- 인스턴스 생성후, “참조변수.인스턴스변수명” 으로 접근
- 인스턴스를 생성할 때 생성되고, 참조변수가 없을때 가비지컬렉터에 의해 자동제거
- 클래스변수
- 같은 클래스의 모든 인스턴스들이 공유하는 변수
- 인스턴스 생성없이 “클래스이름.클래스변수명” 으로 접근
- 클래스가 로딩될 때 생성되고 프로그램이 종료될때 소멸
- 지역변수
- 메서드 내에 선언되며, 메서드의 종료와 함께 소멸
- 조건문, 반복문의 블럭{} 내에 선언된 지역변수는 블럭을 벗어나면 소멸
3. 메서드
- 메서드란?
- 작업을 수행하기 위한 명령문의 집합
- 메서드의 장점과 작성지침
- 반복적인 코드를 줄이고 코드관리 용이
- 반복적으로 수행되는 여러문장 메서드로 작성
- 하나의 메서드는 한가지 기능만 수행하도록 작성하는것이 좋다
- 관련된 여러문장을 메서드로 작성한다
- 기본형 매개변수와 참조형 매개변수와
- 기본형 매개변수 : 변수의 값을 읽기만 할 수 있다.
- 참조형 매개변수 : 변수의 값을 읽고 변경할 수 있다.
4. 클래스메서드와 인스턴스메서드
- 클래스변수와 인스턴스 변수와 거의 같다
- 인스턴스메서드
- 인스턴스생성 후 “참조변수.메서드이름()” 으로 호출
- 인스턴스변수나 인스턴스메서드와 관련된 작업을 하는 메서드
- 메서드 내에서 인스턴스변수 사용가능
- 클래스메서드 (static메서드)
- 객체생성 없이 “클래스이름.메서드이름()”으로 호출
- 인스턴스변수나 인스턴스메서드와 관련없는 작업을 하는 메서드
- 메서드내에서 인스턴스변수 사용불가
- 메서드 내에서 인스턴스변수를 사용하지 않는다면 static을 붙이는것을 고려한다.
5. 메서드 오버로딩
- 하나의 클래스에 같은이름의 메서드를 여러개 정의하는것을 오버로딩이라 한다.
- 오버로딩의 조건
- 메서드의 이름이 같아야한다.
- 매개변수의 개수 또는 타입이 달라야 한다.
- 매개변수는 같고 리턴타입이 다른 경우는 오버로딩이 성립되지 않는다. (리턴타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다.)
- ※ 오버로딩과 오버라이딩의 차이
- 오버로딩 : 기존에 없는 새로운 메서드를 정의하는것
- 오버라이딩 : 상속받은 메서드의 내용을 변경하는 것