다른 프로그래밍 언어에는 함수라는 것이 별도로 존재한다. 하지만 Java는 Class를 떠나 존재하는 것은 있을 수 없기 때문에 Java의 함수는 따로 존재하지 않고 Class내에 존재한다.
Java는 이러한 클래스 내의 함수를 Method로 부른다.
보통 함수와 메소드가 공존하는 언어(Python..etc)에서는 두개를 구분하여 말하기도 하지만 Java는 보통 메소드와 함수를 구분하여 말하지 않는다. 다만 Java에서 사용되는 함수의 정확한 명칭은 메소드이다.
1. Method 정의
메소드(Method) 또는 멤버 함수(Member function)이라고 부르며, 객체 지향 프로그래밍에서 객체과 관련된 서브 루틴(또는 함수)로 데이터와 멤버 변수에 대한 접근 권한을 갖는다.
종류
① 인스턴스 메소드(비정적 메소드)
② 클래스 메소드(정적 메소드)
두 메소드의 차이는 무엇일까?
바로 인스턴스 변수 사용 유무로 나뉘며 먼저 인스턴스 메소드를 알아보자.
▶ 인스턴스 메소드 (비정적 메소드)
① 인스턴스 생성 후, 참조 변수.메소드 명() 으로 호출한다.
② 인스턴스 멤버와 관련된 작업을 한다.
③ 메소드 내에서 인스턴스 변수를 사용할 수 있다.
④ 인스턴스 변수를 이용해서 작업을 하므로 변수의 묶음인 객체를 생성해야 인스턴스 메소드를 호출할 수 있다.
Exam ex = new Exam();
ex.example = "예시";
⑤ Non-static
▶ 클래스 메소드(정적 메소드)
① 객체 생성 없이 클래스명.메소드명()으로 호출이 가능하다.
② 인스턴스 멤버와 관련되지 않은 작업을 한다.
③ 메소드 내에서 인스턴스 변수를 사용할 수 없다.
④ 인스턴스 메소드와 달리 인스턴스 변수가 필요 없으므로 객체를 생성하지 않고도 호출할 수 있다.
Math.random();
각각의 메소드들은 위의 경우 특징을 가지고 있다.
이제 호출의 차이를 조금 알아보자.
호출
① 클래스 메소드는 인스턴스 변수를 호출할 수 없지만 인스턴스 메소드는 클래스 메소드를 호출할 수 있다.
Why?
인스턴스 메소드를 이용하려면 인스턴스 변수를 사용해야하는데 이는 객체 생성이 필요하다.
반면에 클래스 메소드는 항상 호출이 가능해야 하지만 객체가 있을지 없을지 모르기 때문에 불가능하다.
② 클래스 메소드끼리,인스턴스 메소드끼리는 호출이 가능하다.
2. Method 필요성
Method를 한글로 번역하면 방법을 의미한다.
개발자가 특정한 행동을 정의하고 그 행동을 호출(또는 실행)하면 프로그램에서 정해진 방법대로 움직인다.
이것이 바로 Method 다.
메소드를 사용하는 이유는 보통 두 가지가 있다.
ⓛ 소스 코드의 가독성
② 소스 코드의 재사용성
이외 여러가지 이유도 있겠지만 보통 위의 경우이며 한 가지로 요약하면 중복되는 코드의 반복적인 프로그래밍을 피할 수 있기 때문이다.
'Java' 카테고리의 다른 글
[Java] 메모리 구조 (Static,Stack,Heap) (0) | 2022.11.07 |
---|---|
[Java] Class 와 Instance 그리고 Object (0) | 2022.11.07 |
[Java] Method (4) (0) | 2022.11.07 |
[Java] Method (3) (0) | 2022.11.05 |
[Java] Method (2) (0) | 2022.11.05 |