자바의 함수와 메서드
2024. 1. 27. 03:21ㆍJava
반응형
함수란 무엇인가?
함수(또는 메서드) 는 어떤 반복적인 작업을 수행하도록 하기 위한 코드 덩어리이다.
‘작업’을 ‘반복’적으로 수행할 수 있도록 ‘재사용’하는 것에 초점이 있다.
메서드의 선언
public int sum(int a, int b) {
return a + b;
}
- 메서드 시그니쳐 (Method Signature) : 함수의 이름과 파라미터 이름을 포함한 부분
sum(int a, int b)
- 접근 제어자 (Access Specifier) : 함수의 사용(접근)을 제어. 자바에서는 4가지 종류를 지원한다.
- Public : 어플리케이션 내 어떤 클래스에서도 사용 가능
- Private : 같은 클래스 내에서만 사용 가능
- Protected : 같은 패키지나 다른 패키지에서 상속받은 클래스에서만 사용 가능
- Default : 같은 패키지에서만 사용 가능
- 반환 타입 (Return Type) : 함수가 처리를 마치고 반환할 데이터의 자료형
int
- 메서드 이름 (Method Name) : 함수의 기능과 관련하여 명명하고, 함수의 이름으로 호출한다.
sum
- 파라미터 목록 (Parameter List) : 콤마(,) 로 구분하며, 괄호 안에 들어 있는 함수 처리에 필요한 데이터의 목록
(int a, int b)
- 메서드 바디 (Method Body) : 함수의 몸체. 함수가 어떻게 동작할 지 설명하며, 중괄호로 둘러싸여 있다.
메서드의 명명
- 동작을 정의하므로 동사형으로 명명한다.
- 첫 글자는 소문자로 시작하고, 여러 단어로 이루어진 경우 대문자로 구분한다.
- ex. sum(), area(), areaOfCircle()
메서드의 종류
시스템에 의해 미리 정의된 메서드
- System.out.println()
유저가 정의한 메서드
public void findEvenOdd(int num) { if (num % 2 == 0) { System.out.println("even"); } else { System.out.println("odd"); } } findEvenOdd(5) // odd
정적 메서드 (static method)
메서드 이름 이전에 static 키워드를 입력하여 생성할 수 있다.
정적(static) 메서드이므로 객체 인스턴스를 새로 생성하지 않고도 호출할 수 있다.
ex. main()
public class Main() { static void show() { System.out.println("Static Method"); } show(); // static Method }
인스턴스 메서드 (instance method)
non-static 메서드로, 객체 인스턴스를 새로 생성하고 내부에서 호출해야 한다.
public class Main() { public void findEvenOdd(int num){ if (num % 2 == 0) { System.out.println("even"); } else { System.out.println("odd"); } } Main m = new Main(); m.findEvenOdd(4); // even }
인스턴스 메서드에도 두 종류가 있다.
접근자 메서드 (Accessor Method) : 일명 Getter. 접근 제어자가 private인 필드의 데이터를 가져오는 역할을 한다.
public int getId() { return id; }
수정자 메서드 (Mutator Method) : 일명 Setter. 접근 제어자가 private인 필드의 데이터를 수정하는 역할을 한다.
public void setRoll(int roll) { this.roll = roll; }
추상 메서드 (Abstract Method)
메서드 바디가 비어있는 메서드
추상 클래스 내에서 정의된다.
추상 메서드의 동작은 추상 클래스를 상속받은 클래스에서 정의해서 사용하게 된다.
public class Main extends ab { // 추상 클래스 구현 public static void main(String[] args) { Main m = new Main(); m.abMethod(); //abstract method } void abMethod() { // 추상 메서드 구현 System.out.println("abstract method"); } } abstract class ab { // 추상 클래스 정의 abstract void abMethod(); // 추상 메서드 정의 }
팩토리 메서드 (Factory Method)
- 자신이 속한 클래스 객체를 반환하는 메서드
- 모든 정적 메서드는 팩토리 메서드이다.
그래서 메서드를 왜? 메서드 사용의 장점
- 재사용성 (Reusablilty) : 메서드는 코드를 한번 작성하면 메서드 이름을 부르는 것만으로 호출되므로 여러번 재사용할 수 있다.
- 추상화 (Abstraction) : 메서드의 내부 구현은 매우 복잡해질 수 있지만, 호출하는 입장에서는 이름이 명확하면 구체적인 동작을 몰라도 사용할 수 있다.
- 향상된 가독성 (Improved Readability) : 코드 덩어리를 작게 쪼개어 잘 명명된 메서드들로 만들면 가독성 높은 코드를 만들 수 있다.
- 관심사 분리 (Separation of concerns) : 다른 역할을 하는 메서드를 각각 분리함으로써 서로 다른 동작과 책임을 갖게 할 수 있다.
- 향상된 모듈화 (Improved modulrity) : 작게 쪼개어진 메서드들은 관리 가능한 모듈로 동작할 수 있다.
- 테스트 최적화 (Improved testablilty) : 작게 쪼개어진 메서드들은 디버그, 테스트하기 용이해진다.
- 향상된 성능 (Improved performance) : 메서드를 잘 쪼개어 구조화하면, 코드의 양도 줄이고 가독성도 올리고 캐싱도 잘 할 수 있다.
Resources
반응형