-- 자바에서 클래스는 멤버(member)로 속성을 표현하는 필드(field)와 기능을 표현하는 메소드(method)를 가진다.
그중에서 메소드란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있다.
✔️ 메서드란? (method)
객체 지향 프로그래밍에서 클래스 내에서 특정 작업을 수행하는 코드 블록을 말한다.
메서드는 클래스의 동작이나 기능을 정의하며, 객체의 상태를 변경하거나 특정 계산을 수행하는 역할을 한다.
메서드는 클래스의 멤버로서 클래스 내부에서 정의되며, 외부에서 호출하여 사용할 수 있다.
메서드의 특징과 역할은 다음과 같다.
• 코드 재사용
메서는 작업의 논리를 단일 코드 블록으로 묶어서 중복을 방지하고 코드의 재사용성을 높이는 데 도움을 준다.
• 기능 추상화
클래스의 기능이나 동작을 메서드로 정의하면 해당 기능을 추상화하여 코드를 더 읽기 쉽고 이해하기 쉽게 만든다.
• 코드 모듈화
메서드를 사용하여 클래스의 기능을 작은 논리적 모듈로 분리하여 코드를 구조화하고 관리하기 쉽게 만든다.
• 객체 상호작용
메서드를 통해 객체 간의 상호작용이 가능해진다.
메서드를 호출하여 다른 객체에게 요청을 보내거나 응답을 받을 수 있다.
• 객체의 상태 변경
메서드는 객체의 필드 값을 변경하거나 상태를 조작하는 역할을 한다.
• 인터페이스 제공
클래스 외부에서 객체의 기능에 접근할 때 메서드를 사용하여 객체의 인터페이스를 제공한다.
메서드는 이름, 매개변수(parameter), 반환 값(return value), 기능 내용 등으로 정의된다.
메서드의 호출은 객체의 인스턴스에서 이루어지며, 호출 시 해당 메서드의 기능이 실행된다.
아래는 몇가지 메서드의 예시다.
public class Calculator {
// 두 정수를 더한 결과를 반환하는 메서드
public int add(int a, int b) {
return a + b;
}
// 원의 넓이를 계산하여 반환하는 메서드
public double calculateCircleArea(double radius) {
return Math.PI * radius * radius;
}
// 메시지를 출력하는 메서드
public void showMessage(String message) {
System.out.println(message);
}
}
💚 메소드의 사용 목적
클래스에서 메소드를 작성하여 사용하는 이유는 중복되는 코드의 반복적인 프로그래밍을 피할 수 있기 때문이다.
또한, 모듈화로 인해 코드의 가독성도 좋아진다.
그리고 프로그램에 문제가 발생하거나 기능의 변경이 필요할 때도 손쉽게 유지보수를 할 수 있게 된다.
-- 메소드를 작성할 때는 되도록 메소드가 하나의 기능만을 수행하도록 작성하는 것이 좋다.
💛 메소드 정의
클래스에서 메소드를 정의하는 방법은 일반 함수를 정의하는 방법과 크게 다르지 않다.
- 문법:
접근제어자 반환타입 메소드이름(매개변수목록) { // 선언부
// 구현부
}
1. 접근 제어자: 해당 메소드에 접근할 수 있는 범위를 명시한다.
2. 반환 타입(return type): 메소드가 모든 작업을 마치고 반환하는 데이터의 타입을 명시한다.
3. 메소드 이름: 메소드를 호출하지 위한 이름을 명시한다.
4. 매개변수 목록(parameters): 메소드 호출 시에 전달되는 인수의 값을 저장할 변수들을 명시한다.
5. 구현부: 메소드의 고유 기능을 수행하는 명령문의 집합이다.
-- 메소드 시그니처(method signature)란 메소드의 선언부에 명시되는 매개변수의 리스트를 가리킨다.
만약 두 메소드가 매개변수 개수와 타입, 그 순서까지 모두 같다면, 이 두 메소드의 시그니처는 같다고 할 수 있다.
-- 다음 예제는 Car 클래스의 accelerate() 메소드를 정의하는 예제이다.
- 예제
class Car{
private int currentSpeed;
private int accelertionTime;
....
① public void accelerate(int speed, int second){ // 선언부
// 구현부
System.out.println(second + "초간 속도를 시속" + speed + "(으)로 가속함!!");
}
...
}
-- 위 예제의 ①번 라인에서는 accelerate() 메소드를 정의하고 있다.
이 메소드는 public 접근 제어자를 사용하여 선언되어 해당 객체를 사용하는 프로그램 어디에서나 직접 접근할 수 있다.
반환 타입에는 어떠한 값도 반환하지 않는다는 의미를 가진 void를 명시한다.
그 다음으로 메소드의 이름을 명시하고, 매개변수로 int형 변수인 speed와 second를 전달받는다.
이렇게 전달받은 매개변수를 가지고 메소드 구현부에서 고유한 작업을 수행할 수 있는 것이다.
💜 메소드 호출
자바에서 위와 같은 방법으로 정의한 메소드는 멤버 참조 연산자(.)를 사용하여 호출할 수 있다.
-- 자바에서 메소드를 호출하는 방법은 다음과 같다.
- 문법:
1. 객체참조변수이름.매소드이름(); // 매개변수가 없는 메소드의 호출
2. 객체참조변수이름.메소드이름(인수1, 인수2, ...); // 매개변수가 있는 메소드의 호출
-- 다음 예제는 앞서 정의한 accelerate() 메소드를 호출하는 예제이다.
- 예제
Car myCar = new Car();
myCar.accelerate(60, 3); // myCar 인스턴스의 accelerate() 메소드를 호출
-- 다음 예제는 실제로 accelerate() 메소드를 정의하고 호출하는 예제이다.
- 예제
class Car{
private int currentSpeed;
private int accelerateTime;
public void accelerate(int speed, int second){
System.out.println(second + "초간 속도를 시속" + speed + "(으)로 가속함!!");
}
}
public class Method01{
public static void main(String[] args){
Car myCar = new Car(); // 객체 생성
myCar.accelerate(60, 3); // 메소드 호출
}
}
- 실행 결과
3초간 속도를 시속 60(으)로 가속함!!
'JAVA' 카테고리의 다른 글
클래스(Class)와 객체(Object) (0) | 2023.08.17 |
---|---|
객체지향언어란? (0) | 2023.08.17 |
접근 제어자란? (public, protected, default, private) (0) | 2023.08.17 |
형변환(casting) (자동 형변환, 강제 형변환) (0) | 2023.08.15 |
변수에 대해서 (0) | 2023.08.11 |