1. 객체지향이란
2. 클래스와 객체(인스턴스)
2.1 클래스
2.2 객체(인스턴스)
3. 객체의 구성요소
4. 객체 생성 방법
class A;
A a
a = new A()
- A a 클래스 A타입의 참조변수 a를 선언. 메모리에 a를 위한 공간이 마련된다.
- a = new A() A 객체가 메모리에 생성된다. 그 이후, 생성된 객체의 메모리 주소르 변수 a에 대입한다.
5. 변수의 종류
- 인스턴스 변수 : 객체가 생성 될 때 만들어진다. 인스턴스는 독립적인 메모리를 가지므로, 인스턴스간에 공유할 수 없다.
- 클래스 변수 : static 변수. 클래스변수는 모든 객체가 공통된 저장공간을 공유한다. 클래스가 메모리에 올라간 뒤엔 언제나 사용가능하다.
- 지역변수 : 메서드 내에 선언된 지역변수. 메서드가 종료되면 사라진다.
6. jvm 메모리 구조
- Method Area
- 클래스파일을 읽어 분석해 클래스에 대한 정보를 저장한다. 이 때 클래스 변수도 이 영역에 올라감
- Heap
- Call stack
- 메서드의 작업에 필요한 메모리 공간. 지역변수, 연산의 중간결과 등을 저장.
7. 기본형 매개변수와 참조형 매개변수
- 참조형일 경우, 주소값을 복사해서 주는 것 이기 때문에 원본의 값을 변경가능하다.
8. 메서드 종류
- 클래스 메서드(static) : 클래스 변수와 마찬가지로, 클래스가 메모리에 올라 가면 사용 가능하다.
- 인스턴스 메서드 : 인스턴스가 생성되면 사용 가능하다.
- 클래스메서드 내부에서는 인스턴스 변수, 인스턴스 메서드를 호출하지 못한다.
9. 오버로딩
- 한 클래스내에 같은 이름의 메서드를 선언하는것
- 이름이 같아야 하고, 매개변수의 개수 또는 타입이 달라야 한다.
10. 가변인자
public func(String... args) {}
func("a")
func("a, b")
func(new String[] {"a", "b"})
11. 생성자
- 생성자 : 객체가 생성될 때 호출하는 인스턴스 초기화 메서드.
- 만약, 직접 만들어주지 않으면, 컴파일러가 기본생성자를 만들어 준다.
- 생성자의 이름은 클래스의 이름과 같다.
- 반환 값이 없다.
12. 초기화
- 인스턴스 변수는 초기화 하지 않아도, 기본값으로 초기화 해 준다.
- 지역변수는 반드시 초기화 후에 사용해야 한다.
12.1 초기화 방법
-
명시적 초기화
-
생성자
-
초기화 블럭
{
}
static{
}
12.2 멤버변수 초기화 순서
- 클래스변수 : 기본값 -> 명시적 초기화 -> 클래스 초기화 블럭
- 인스턴스변수 : 기본값 -> 명시적초기화 -> 인스턴스 초기화 블럭 -> 생성자