728x90
자바에서는 정적 개념과 동적 개념을 구분하고 있다.
쉽게 표현하면 클래스가 로드되는 시점을 정적,
로드된 클래스가 실행된 이후를 동적 이라고 한다.
이 중 객체는 동적 데이터라고 해서 프로그램이 실행된 이후에 발생되는 대표적 형태이다.
인스턴스 멤버와 정적 멤버
- 인스턴스 멤버 :
객체를 생성한 후 사용할 수 있는 필드와 메소드
별도의 기억공간을 가지고 객체마다 각각 다른 값을 가진다.
객체명. 변수명으로 호출 - 정적 멤버 (클래스 멤버) :
객체를 생성하지 않고 사용할 수 있는 필드와 메소드
클래스에 소속된 멤버이기 때문에 클래스 멤버라고도 한다.
모든 객체를 통틀어 하나만 생성
하나의 클래스에 하나의 변수만 가능
같은 클래스에서 나온 모든 객체가 공유
static을 붙여 선언한다.
클래스. 변수명으로 호출
정적 메소드
정적 메소드 또한 정적 멤버처럼 static을 붙여 만들 수 있다.
대표적은 예로 main메소드가 있는데 이는 객체 생성 없이 main메소드를 호출하기 위해서이다.
※사용 시 주의사항
- 인스턴스 변수, 메소드 사용 불가
객체가 생성되지 않은 상태에서 호출되는 메소드 이므로
객체 안에서만 존재하는 인스턴스 변수들을 사용할 수 없다. - this 사용 불가
this가 참조할 인스턴스가 존재하지 않음 - 정적 변수와 지역 변수만 사용 가능
(정적 메소드에서 정적 메소드 호출 가능) - ex) final을 붙인 상수는 모두 다 같이 쓰는 변수이다.
따라서 객체를 만들지 않고 static을 붙여주는 것이 좋다.
'JAVA' 카테고리의 다른 글
오버로드 (Overload) (0) | 2021.07.18 |
---|---|
오버라이드 (Override) (0) | 2021.07.18 |
객체지향 프로그래밍 (Object Oriented Programming) (0) | 2021.07.14 |
MessageFormat (0) | 2021.07.14 |
currentTimeMillis (0) | 2021.07.14 |