Instance vs Static variable, method
- Instance variable의 경우 각 객체마다 instance variable이 생성된다.
- static 변수는 하나이므로 불변의 값 혹은 여러 곳에 공통적으로 쓰이는 값(파이), 고정적으로 할당을 해놓고 바뀌지 않는 변수는 static으로 작성한다.
static
– 메소드, attribute(local 변수 X), nested class(class 안에 선언된 class)에 사용되는 제한자(modifier)
ex) static class A { static class B { } }
① class의 멤버가 된다.(객체의 것이 아니라 class의 것이다)
② 호출 : class이름.멤버 ex) class A { static int a; static void go() {} } → A.a=10; A.go();
③ static 메소드, 변수는 그 class에서 생성된 모든 객체들이 똑같은 값, 똑같은 기능을 실행하는 경우 class의 멤버(소속)로 처리
④ 구문 : 변수 → 접근제한자 static type 이름[=값];
메소드 → 접근제한자 static returnType 이름([매개변수]) { }
⑤ static 메소드는 static 멤버만 접근 가능 → instance변수, 메소드 접근 불가능
Instance 멤버 변수 | ⇨ | Field – class block 안에 선언된 변수 |
class 멤버 변수 |
Class Loading과 동시에 클래스 내의 모든 메소드가 메모리에 올라간다..?
메소드영역→메소드코드 | Static영역→ Static멤버(변수,메소드) | Constant pool →final 변수 |
CustomerDTO() {} CustomerDTO(string name, int age) {} getName() {} setName() {} getAge() {} setAge() {} getTotalInstanceCount() {} | int totalInstanceCount getTotalInstanceCount() {} |
|
Class영역(Area) → class별로 구분 |
변수(Variable)
변수종류 | 선언 | 묵시적 초기화 | 저장메모리 | 접근범위 (scope, life cycle) | |
Field | Instance | class block | 0 | Heap | 객체 생성~ 객체를 참조할 수 있을 때까지 |
Static Class | class block-> static 제한자 | 0 | class영역의 static영역 | 프로그램 시작~ 프로그램 종료 | |
Local Method | 메소드 block | X | 실행Stack | 메소드가 실행하는 동안→ 선언부 실행~메소드 종료 |
※ local method를 사용할 경우에는 변수에 default값을 할당해야만 한다.
Singleton 디자인 Pattern
- 오직 하나의 객체만 생성할 수 있는 class
- 일하는 객체를 정의하는 class → business service
접근제한자
| UML | 같은 class 內 | 같은 package 다른 class | 다른 package | 어떤 상황에서든 접근가능 |
private | - | O | X | X | X |
package friendly | X | O | O | X | X |
protected | # | O | O | X | X |
상속 : O(super) | |||||
public | + | O | O | O | O |
'Wanna be a Programmer > Java Programming' 카테고리의 다른 글
Java Programming - 다형성(Polymorphism), Heterogeneous Collection (0) | 2012.07.02 |
---|---|
Java Programming - 상속, 메소드 오버라이딩, super (0) | 2012.07.02 |
Java Programming - 패키지, Import, JAVA 소스 파일 구조 (0) | 2012.07.02 |
Java Programming - 조건문, 반복문, 배열 (0) | 2012.07.01 |
Java Programming - 데이터 타입, Cast 연산자 (0) | 2012.07.01 |