public class Component{
String x = "field"; // (1) 필드
void methodX(){...}; // (2) 메서드
Constructor{...}; // (3) 생성자
class InnerClass{...};// (4) 이너 클래스
}
객체는 크게 속성과 기능으로 구성
- 속성 = 필드 / 기능 = 메서드 => 멤버
new 키워드 통해 생성
클래스명 참조변수명 = new 생성자();
Car Audi = new Car();
포인트 연산자 .
를 통해 객체의 멤버에 접근
참조 벼수명.필드/메서드()를 통해 활용
1) 클래스 타입의 참조 변수 선언
2) new 키워드와 생성자 통해 인스턴스 생성
3) 생성된 인스턴스 참조변수 선언
☛ 참조변수 - 실제 데이터가 저장된 힙 메모리의 주솟값
변수 | static | 비고 |
---|---|---|
클래스 | O | 멤버 변수 |
인스턴스 | X | 멤버 변수 |
지역 | X | 그 외 |
class Sample{ // -> 클래스 영역
int instance; // 인스턴스 변수
static classValue; // 클래스 변수(static, 공유변수)
void method(){ // -> 메서드 영역
int localValue=0; // 지역 변수, {}블록 안에서만 유효
}
}
a. 인스턴스 고유 속성(예-사람의 성격)
b. new 생성자()를 통해 인스턴스 생성시 만들어진다.
a. 모든 인스턴스에 동일값 부여
b. static
키워드 사용
c. 인스턴스 별도 생성 없이 클래스명.클래스변수명
통해 사용가능
a. 메서드 내에 선언
b. 메서드 내 {}
블록에서만 사용 가능
c. 스택 메모리에 저장되어 메소드 종료와 동시에 삭제
d. 직접 초기화 실행
클래스명.클래스
사용가능특징)
1) 정적 필드는 객체간 공유하는 성질
2) 정적 메서드는 인스턴스 변수와 메서드 사용불가
접근제어자 반환타입 메서드명(매개변수){ // 메서드 시그니처
메서드 내용 // 메서드 바디
}
.
통해 메서드 호출클래스명(매개변수){
...
}
class Chair{
private String modelName;
public Chair(String modelName){// 생성자
this.modelName;
}
class OuterClass{ // 외부클래스
class InnerClass{
// 인스턴스 내부 클래스
}
static class StaticInnerClass{
// 정적 내부 클래스
}
void run(){
// 지역 내부 클래스
}
}
}
멤버 내부 클래스 = [인스턴스 내부 클래스/정적 내부 클래스]
static
키워드 사용