/*
<메서드>
◎ 메서드(Method)는 클래스(Class)가 포함하는 멤버(Member) 중 하나로, 호출(Call) 가능한 단위이다.
◎ 메서드 명명은 카멜 케이스를 이용하고, 주로 '동사 + 목적어' 의 형태를 가진다.
가령, `addUser`,`deleteUser` 와 같은 꼴.
단, 'to 타입' 과 같은 형식(가령 toString 및 toArray 등)을 가지기도 하고, 반환 타입이 논리형(boolean) 인 경우
3인칭 단수형의 '동사' 를 이름(가령 equals 및 matches 등)으로 가지기도 한다.
◎ 메서드의 명명에는 예외가 있을 수 있으나 카멜 케이스를 지키는 것에는 예외가 없다
[접근 제한자(Access Modifier)] [static|abstract|final]? [반환타입|void] [메서드 이름] ([메게 변수(Parameter),...]?)
[throws [예외,...]]?{
//구현부
}
->[] 는 실제로 작성하면 안된다. ex) 접근제한자 static|abstract...형태이다.([]없음)
->[]:한 묶음 / [A|B] : A,B중의 하나 / void : 반환타입이 없을때 씀. / []? : 유무상관없음(둘중하나가 오거나 아예 없거나)
([A,...]?) : (int a) or (int a, int b,...)
- static : 메서드의 정적 여부.
- abstract : 메서드의 추상 여부.
- final : 메서드의 최종 여부.
- void : 메서드의 반환 타입이 없음을 의미함.
- throws : 해당 메서드 호출 시 발생할 수 있는 예외(Exception) 한 개 이상을 명시한다.
해당 메서드를 호출하는 컨텍스트(Context)는 해당 예외에 대한 처리가 되어있어야한다.
- 메서드는 정적이면서 추상적이 거나 최종일 수 없고, 추상적이면서 정적이거나 최종적일 수 없으며 최종적이면서
정적이거나 추상적일 수 없다.(static,abstract,final 중 하나만 쓰라는 뜻)
-추상 메서드
→ abstract 키워드를 이용하여 추상적인 메서드를 선언할 수 있다.
→ 메서드가 추상적일 경우 구현부 ( { , } ) 를 가지지 않아야 하며 세미콜론(;) 으로 끝내야 한다.
ex) public void move(){...} => public abstract void move();
→ 추상 메서드를 한 개 이상 포함하고 있는 클래스는 반드시 추상적이어야 한다.
public abstract void someAbstractMethod(); //추상 메서드의 예
public static void main(String[] args){
//...
}
- 접근 제한자는 public 이다.
- 정적이고( static ) 추상적 ( abstract ) 이지 않다.
- 반환 타입이 없다.
- 메서드의 이름은 main 이다.
- 매개 변수는 String[] 타입의 args 한개가 있다.
<return>
◎ return 키워드는 어떠한 메서드의 반환 타입이 있을 때( void 가 아닐때) 해당 메서드의 호출 결과를 반환(Return) 해주기 위해
사용 하는 키워드이다. return 반환값; 형식으로 사용한다
◎ 메서드의 반환 타입이 있는 경우 ( void 가 아닐 때) 모든 경우의 수에서 반환 값을 반환하는 구문이 작성되어야만 한다.
◎ 메서드의 반환 타입이 없을 때 ( void 일때) 에도 사용할 수 있는데 단순히 return; 로 사용할 수 있다.
◎ 반환 값의 유무와 관계 없이 return 은 해당 메서드의 실행을 즉시 중단시킨다.
<호출>
◎ 메서드를 호출(Call)하기 위해서는 해당 메서드를 멤버로 가지고 있는 클래스(혹은 객체)에 접근하여 메서드 이름을 적고 괄호 안에 요구되는
매게 변수의 구조와 일치하는 전달 인자를 전달해야 한다.
<재귀호출(Recursive Call)>
◎ 재귀호출이란, 어떠한 메서드 x의 구현부 내에 동일한 메서드 x를 호출하는것을 의미한다.
<오버로딩(Overloading)>
◎ 메서드 오버로딩(Method Overloading) 은 동일한 이름을 가지는 메서드 두개 이상에 대해 매개변수 구조를 다르게하여
메서드를 정의하는 것이다.
<가변인자(Variable Arguments)> : 변할수있는 인자들이다.
◎ 어떠한 타입 T에 대해서 정해지지 않은 개수의 인자를 전달 받기 위해 사용한다.
단, 0개의 인자도 허용함으로 유의한다.
◎ 메서드 매개변수 구조 선언시 가변인자는 마지막에 한개만 존재해야 한다.
◎ 가변인자 `T...`는 실질적으로 T에 대한 배열(T[])로 인식됨으로 사용에 유의한다.
public static int sum(int...nums) {...}
위 코드에서 가변인자 nums 는 사실 정수형 배열(int[])이다.
<재정의(Override)>
◎ 메서드 재정의(Override)는 상속 받고 있는 부모(몇 단계 부모인가는 상관 없음) 가 가진 최종적이지 않은 메서드의 구현부를
새로 작성하는 것이다.
◎ 자식 타입에서 재정의된 메서드의 구현부는 부모 타입인 자식 객체를 가지는 변수를 통해 호출하더라도 재정의된 내용이 실행된다.
◎ 재정의 되기 전의 (원래)메서드에 접근하는 방법은 재저으이 메서드 구현부 내에서 super 키워드를 이용하는 방법 밖에 없다.
◎ 메서드 재정의시 @Override 어노테이션(Annotation)을 사용해야 한다.
*/
'[study]이론정리 > JAVA' 카테고리의 다른 글
이론_10. String 클래스 (0) | 2024.03.06 |
---|---|
이론_9. 클래스 (0) | 2024.03.06 |
이론_7. WHILE (0) | 2024.03.06 |
이론_6. SWITCH (0) | 2024.03.06 |
이론_5. FOR 문 & 향상된 FOR (0) | 2024.03.06 |