Java 는 OOP(Object Oriented Programming, 객체 지향 프로그래밍) 언어 중 하나 

1. class    : Object를 정의 한것 (설계도)
2. Object   : 눈에 보이는 사물 또는 개념 (설계도를 보고 만든 사물(개념))
3. Instance : 특정 클래스를 언급 해서 생성하는 Object
4. class는 Data type(Reference type) 이다.

1. class 내에 선언된 변수 와 메서드
	1) 멤버변수  (instance 변수)  : Data
	2) 멤버메서드(instance 메서드) : 기능
	- 멤버변수의 데이터타입에는 제한이 없음
	3) 생성자 (Constructor) Construcktor

2. class 선언
접근지정자 [그외지정자] class 클래스명 [extends 클래스명 implements 인터페이스명, ...]{ exends , implements
	//instance 초기화블럭
	{}

	//static 초기화블럭
	static {}

	//멤버변수  (instance 변수) 선언
	접근지정자 [그외지정자] 데이터타입 변수명;

	//멤버메서드(instance 메서드) 선언
	접근지정자 [그외지정자] 리턴타입 메서드명([매개변수 선언...]){
			//메서드 영역
	}

	//생성자 (Constructor)
	접근지정자 클래스명과동일한메서드명([매개변수 선언 ...]){
			//생성자 메서드 영역
	}

}

3. 객체 생성
	- 변수 선언 = 객체생성       
	- DataType 변수명 = 초기값;
	- 클래스명 참조변수명 = new 클래스명();

4. 객체의 멤버 사용(접근)
	1)멤버변수 : 참조변수명.멤버변수명

	2)멤버메서드 : 참조변수명.멤버메서드명()

5. 멤버메서드
	- 메서드 헤더(선언부)
		접근지정자 [그외지정자] 리턴타입 메서드명([매개변수 선언])
	- 메서드 바디(내용)
		{   }

	1) 매개변수 
		- 메서드 선언시 메서드 내부에서 필요한 데이터를 호출한 쪽에서 데이터를 받기 위해 선언
		- 매개변수 선언시 갯수의 제한은 없음( , 로 구분)
		- 매개변수의 데이터타입은 제한이 없음
		- 매개변수는 선언된 메서드내에서 사용하는 지역변수

	2) 인자값
		- 메서드를 호출 할 때 매개변수에 보내는 실제 값(매개변수에 대입하는 값)

	a. 인자값은 매개변수와 갯수와, 순서, 데이터타입이 일치 해야 함
  b. 매개변수의 변수명과 인자값의 변수명은 일치 하지 않아도 됨
			매개변수 int count;
			인자값   int num=1;
			count = num

	3) 리턴타입
		- 호출된 메서드가 종료시 호출한 곳으로 돌려줄 데이터가 있을 때 사용
		- 메서드 선언부에 리턴하는 데이터의 데이터타입을 명시
		- 리턴하는 데이터타입은 1개만 가능
		- 리턴타입에는 제한이 없다
		- void : 리턴할 게 없다
		- 메서드 내에서 return 을 만나면 그 즉시 메서드는 종료
		- 메서드가 종료 되는 조건은 메서드 영역의 끝을 만나거나 return을 만났을 때
		- return 다음에 코드 작성 시 에러

6. 참조변수 this
	- 객체 생성시 만들어지는 변수
	- 만들어진 객체의 주소를 담고 있는 참조변수
	- class 내부의 메서드 내에서만 사용 가능
	- 개발자가 선언하는 변수가 아니라 자동으로 만들어지는 변수
	- Object 마다 하나씩 만들어짐
	- 생략 가능
	- this.멤버변수명
	- this.멤버메서드명()

Method OverLoading


Method OverLoading 
같은 이름의 메서드를 여러개 만드는것
비슷한 일을 하는 같은 이름의 메서드를 여러개 생성

1. 조건
	1) 메서드의 이름이 같아야 함
	2) 매개변수의 갯수나, 타입의 구성이 달라야 함
	3) 리턴타입은 달라도 상관 없음

새로만드는 new 의 개념 

생성자(Constructor) 메서드

- 객체 생성시 딱 한번 호출되는 특수한 메서드
- 객체 생성시 멤버변수의 값을 초기화 하거나, 어떤 일을 하고 싶을 때 사용
- 모든 클래스는 하나 이상의 생성자가 있어야 함
- 클래스 내에 생성자가 없으면 컴파일러가 기본 생성자를 만들어 줌
- 단, 개발자가 하나 이상의 생성자를 선언하면 컴파일러는 기본 생성자를 만들지 않음

1. 생성자 선언 문법
- 메서드와 거의 동일
접근지정자 클래스명과동일한이름([매개변수 선언]){}

2. 기본생성자
- 매개 변수가 없는 생성자
- default Constructor, 빈 생성자

3. this()
- 생성자 내에서 다른 생성자를 호출 할 때 사용
- 생성자 영역 내에서 첫줄에 위치해야 함

4. Instance 초기화 블럭
- 멤버 변수의 초기화 때 보통 사용
- 다른 생성자에서 어떤 멤버변수에 공통적인 값으로 초기화 할 때 
- 클래스 내에 { }

멤버변수 초기화 하는 방법

1. 멤버변수 선언과 동시에 초기화     : 활용도 하
2. 객체 생성 후 멤버변수에 값을 대입 : 활용도 하
3. 생성자에서 초기화                : 활용도 중
4. instance block                  : 활용도 하
5. Getter / Setter 메서드           : 활용도 상

실행순서
1 -> 4 -> 3 ->2,5