# 클래스 요소 // 상속, 다형성, 추상화, 캡슐화

* 멤버
- 필드 : 클래스 내의 변수 // 속성
- 메서드 : 클래스 내의 함수 // 기능
- 이너 클래스 : 클래스 내부의 또다른 클래스

* 멤버x
- 생성자 : 클래스의 객체를 생성하는 역할

# 객체
* 객체는 속성 / 기능으로 이뤄져 있다. 속성과 기능은 필드/메서드로 정의

* new 키워드로 객체를 생성 // ex Car  bmw= new Car
- new 키워드 사용으로 힙메모리에 저장 // 힙메모리는 동적메모리 / 순차적으로 저장x


* 포인터 연산자 '.' 을 통해 객체의 멤버에 접근이 가능
- 필드, 메서드 호출 가능 // 참조변수명.필드명 / 참조변수명.메서드명()

 
# 필드

* 클래스 변수(static) / 인스턴스 변수 / 지역변수(메서드 안에서만 유효) 세가지로 구분
* 멤버변수 : 클래스변수 / 인스턴스 변수   // 클래스 안에 선언
* 지역변수 : 지역변수    // 메서드 내부 블럭에 선언


* 인스턴스 변수 (힙메모리 저장) <-- 직접 초기화 않해도 강제 초기화
- 인스턴스가 가지는 각각의 고유한 속성을 저장하기 위한 변수
- new 생성자()를 통해 인스턴스가 생성될 때 만들어짐 
- 동일한 클래스로부터 생성되지만 객체의 고유한 개별성을 가짐

* 클래스 변수 (ststic 전용 저장공간으로 공유 / 프로그램 실행과 동시에 먼저 메모리 할당)
- 인스턴스를 따로 생성하지 않고도 언제든 클래스명.클래스변수명을 통해 사용이 가능
- 한 클래스로부터 생성되는 모든 인스턴스들이 특정 값을 공유해야 하는 경우 static 키워드 사용

*지역 변수 (스택메모리 저장) <-- 변수 생성시 초기화 해야함
- 메서드가 종료되면 소멸
- 한동안 사용되지 않을 경우 가비지컬렉터가 삭제

* Static 키워드(정적 멤버)
- 클래스의 멤버(필드, 메서드, 이너 클래스)에 사용하는 키워드
- 객체 생성없이 클래스명 . 멤버명 으로 바로 사용가능 // <-- 형태로 사용 권장( 정적멤버 구분)

# 메서드

* 클래스 메서드 -> 클래스 변수 접근가능
* 클래스 메서드 -> 인스턴스변수 접근 불가(x) // static은 실행과 동시에 먼저 생성되는데 인스턴스 변수는 그 이후 생성되기 때문에 오류발생


* 오버로딩 : 같은 메서드 이름 / 매개변수의 개수, 타입이 다름

'Study > Java' 카테고리의 다른 글

애너테이션 / 스트림  (0) 2022.11.15
컬렉션  (0) 2022.11.10
제네릭 / 예외처리  (0) 2022.11.10
다형성 / 추상화  (0) 2022.11.08
상속 / 캡슐화  (0) 2022.11.07

+ Recent posts