클래스의행위
를 의미하는 것이 메소드(method)이다.
함수
와 메소드
를 구분하는 것은 클래스의 소속 여부
이며 특정 클래스에 소속된 경우는 메소드, 아닌 경우는 함수이다.
(static)클래스 메소드 or 인스턴스 메소드 (public[접근지정자]) (int[반환타입]) myFunction [메소드명](int x [파라미터]) {return x}
접근지정자에는 private
, default
, protected
, public
이 있다.
메소드 이름을 같게 하고, 파라미터를 다르게 하여 여러 메소드를 정의하는 방법을 오버로딩이라고 한다.
JAVA의 메소드 시그니처는 메소드의 이름부터 파라미터까지
기준이다.
메소드의 반환타입은 메소드 시그니처에 포함되지 않기 때문에 메소드 오버로딩과는 관련이 없다.
메소드 오버로딩은 하나의 클래스 내에서의 기능이고 파라미터는 타입, 순서, 개수를 달리하여 구분해야한다.
정적 바인딩의 경우, 메소드의 이름이 같을 수 없다. 프로그램의 시작 시점에 메소드의 호출이 발생할때 어디서 수행되어야 하는지 결정되는 것이다.
동적 바인딩은 프로그램이 실행되는중에 결정된다. 호출이 발생하기 전까지는 어디에서 수행되어야 하는지 알 수 없다. 메소드가 실행되고 나서 결정된다.
메소드의 시그니처는 메소드의 이름 뿐만이 아니라 파라미터까지가 기준이다. 그러므로 동적 바인딩 정적 바인딩이 구분되는 것이다.
class의 구성요소 중 하나이며 객체를 인스턴스화(new) 할 때 가장 먼저 호출되는 메소드이다.
생성자의 역할은 객체가 갖는 필드를 초기화하며 따라서 모든 클래스는 하나 이상의 생성자를 갖는다.
생성자의 이름은 해당 클래스의 이름과 같고 반환 타입이 없다.
생성자도 모든 접근제어자를 적용할 수 있으며 일반적으로 public 접근제어자가 적용된다.
매개 변수가 없고 구현 내용 없이 정의하는 생성자를 default constructor
라고 한다.
클래스에는 반드시 하나 이상의 생성자를 가지며 사용자가 정의하지 않으면 default constructor 가 자동으로 생성된다.
초기값은 숫자타입0
, 논리타입false
, 참조타입null
이다.
클래스 필드의 초기화를 위해서 정의하는 생성자를 사용자 정의 생성자라 한다.
사용자 정의 생성자는 해당 클래스가 갖는 필드의 초기화를 위해 정의하며 여러 형태로 정의가 가능하다.
사용자 정의 생성자가 있다면, default 생성자는 자동생성되지 않는다.
하나의 클래스에 정의된 다수의 생성자 간에 this() 생성자를 통해 호출이 가능.
this() 생성자는 중복되는 코드를 제거하고 생성자를 재사용하기 위해 사용.
this() 생성자의 호출은 반드시 생성자 이름의 바로 아래에 위치해야 한다.