대상선정
사람
객체모델링
명사적: 눈, 코, 입....등
동사적: 먹다, 입다, 자다...등
클래스 작성
클래스를 작성하고, 클래스 간의 관계를 설정

객체 생성
Person p=new Person();
객체 사용
p.eat();
: 객체 다형성, method 다형성 두가지를 제공
method 다형성에는 Overload(Overloading), Override(Overriding)가 있다.
== method overloading
접근지정자는 달라도 되고, 반환형 달라도 된다.(근데 거의 같게 한다.)
method명은 같아야한다.
매개변수는 반드시 달라야 한다.

public class TestOverloading {
//별 하나 출력
public void printStar() {
System.out.print("★");
}//printStar
//입력되는 수만큼 별을 옆으로 출력
public void printStar(int cnt) {//매개변수 다름.
for (int i = 0; i < cnt; i++) {
System.out.print("☆");
}//end for
}//printStar
public static void main(String[] args) {
TestOverloading staring = new TestOverloading();
staring.printStar();//overload된 method 호출
staring.printStar(10);
}//main
}//class
★☆☆☆☆☆☆☆☆☆☆
객체가 생성될 때 기본적으로 가지고 있어야 할 값이나, 실행되어야 할 코드를 정의하는 method의 일종.
직접 호출되지 않는다.(new에 의해서만 호출.) 상속되지 않는다.
//생성자 호출
new TestConstructor(); //기본
TestConstructor tc = new TestConstructor(); //가능은 하나 tc변수 사용안됨.
_
public static void main(String[] args) {
TestConstructor tc = new TestConstructor(); //가능
new TestConstructor(); //가능
}//main
클래스의 이름과 동일하게 만들어지고(대문자로 시작함.), 반환형이 없다.
this 나 super를 사용하여 클래스 내의 다른 생성자를 호출할 수 있다.
생성자는 Overload(이름은 같지만 매개변수가 다른 거)가 된다.(객체 생성을 다양하게 할 수 있다.)
개발자가 생성자를 하나도 정의하지 않으면 compiler가 매개변수가 없는 기본 생성자(default constructor)를 생성해준다. 개발자 생성자를 하나라도 정의하면 compiler는 기본 생성자를 생성하지 않는다.
접근지정자 클래스명(매개변수,,,) {
//객체가 생성될 때 가지고 있어야 할 기본 값 설정\
//객체가 생성될 때 실행되어야 할 코드 정의
}
접근지정자
public : 클래스 외부에서 객체 생성 가능
protected : 같은 패키지의 다른 클래스에서 객체 생성 가능.
패키지가 다르면 상속관계의 자식 클래스에서만 객체 생성 가능.
default : 같은 패키지의 다른 클래스에서 객체 생성 가능.
패키지가 다르면 객체 생성 불가능.
private : 클래스 안에서만 객체를 생성할 때.(Singleton Pattern을 사용할 때.)
개발자가 생성자를 하나도 정의하지 않으면 클래스의 접근지정자와 동일한 접근지정자가 붙어있는 생성자가 생성된다.(Default Constructor)

(java virtual machine)
