서로 다른 시그니처를 갖는 여러 함수를 같은 이름으로 정의하는 것이다.
ex)
- 오브젝트(인스턴스) 생성 문장 -> 호출되는 생성자
Member m = new Mebmer(); -> Member()
Member m1 = new Member(10); -> Member(int a)
Member m2 = new Member(10, “abc”); -> Member(int a, String s)
두 함수의 이름, 매개변수의 개수, 그 타입이 모두 같다면
이 두 함수의 시그니처는 같다고 할 수 있다.
두 함수는 시그니처가 같다.
ex)
int sum ( int a , int b , double c);
int sum ( int i , int m , double x);
자바 컴파일러는 생성자가 하나도 없는 경우에만 디폴트 생성자를 제공한다. 따라서 프로그래머가 생성자를 직접 추가하면 디폴트 생성자는 만들어지지 않기 때문에, 디폴트 생성자를 만들지 않은 상태에서 오브젝트를 디폴트 생성자로 생성하려고 한다면, 당연하게도 오류가 발생한다. 그렇기 때문에 디폴트 생성자를 사용하고자 한다면 꼭 디폴트 생성자도 선언을 해주어야 한다.