4.3 생성자와 메소드 오버로딩
메소드 오버로딩
: 같은 이름의 메소드가 여러 개 존재하는 것. (=중복정의)
다형성을 구현하는 한 가지 방법이 된다.

-각각의 메소드가 가지고 있는 매개 변수는 달라야 한다.
생성자
: 객체가 생성될 때 객체를 초기화하는 특수한 메소드.
-생성자의 이름은 클래스 이름과 같다.
-일반 메소드와 아주 흡사하지만 반환값을 가지지 않는다.
-생성자도 메소드이기 때문에, 메소드 오버로딩을 사용할 수 있다.

1. 위 코드에서 생성자는
Pizza()와 Pizza(int s, String t)
*생성자는 객체가 new 연산자로 생성될 때, 자동으로 한 번만 호출된다.
생성자 앞에는 대부분 public을 붙이지만, 객체가 하나만 생성되어야 하는 경우에는 private를 붙일 수도 있다.
pizza(int s, String t) 생성자에서는 s와 t라는 매개 변수를 정의하고, 이것은 필드인 size와 type을 초기화하는 데 사용된다.
객체가 new에 의하여 생성될 때, 24는 s로 전달되고, "포테이토"의 값은 t로 전달된다.
기본 생성자
: 매개 변수가 없는 생성자.
-개발자가 생성자를 하나도 정의하지 않으면, 자바 컴파일러는 기본 생성자를 자동으로 만든다.
*기본 생성자에서는 자동적으로 모든 멤버 변수들을 기본값으로 초기화한다.
수치형 변수 0
참조형 변수 null
부울형 변수 flase
< 기본 생성자가 추가되지 않는 경우 >
-개발자가 생성자를 하나라도 선언하면 컴파일러는 기본 생성자를 추가하지 않는다.
this 참조 변수
: 현재 객체 자기 자신을 가리키는 참조 변수.
-컴파일러에서 자동으로 생성한다.
*생성자에서 매개 변수 이름과 필드 이름이 동일한 경우에 혼동을 막기 위해 사용한다.

-컴파일러는 둘 다 매개 변수 radius로 생각한다.
따라서

다음과 같이 작성하면 오류가 발생하지 않는다.
this()
*this에 ()을 붙이면 전혀 다른 의미.
다른 생성자를 의미한다.

< this() 사용 시 주의 사항 >
• 생성자 안에서만 호출이 가능하다.
• 반드시 첫 번째 문장이어야 한다.
• 다른 생성자를 호출할 때만 사용하여야 한다.
*생성자는 실제로 객체를 생성하는 메소드가 아니다.
객체가 생성될 때 초기화하는 메소드이다. (구성자로도 번역)