- Java에서 Class는 멤버로 속성을 표현하는 필드와 기능을 표현하는 Method를 가진다.
- Method는 어떤 특정 작업을 수행하기 위한 명령문의 집합체라고 할 수 있다.
[ 사용 목적 ]
- 클래스에서 메소드를 작성하여 사용하는 이유는 중복되는 코드의 반복적 작성을 피할 수 있기 때문이다.
- 또한, 모듈화로 코드의 가독성도 좋아진다.
- 프로그램에 문제가 발생하거나, 기능 변경이 필요할 때에도 손쉽게 유지보수를 할 수 있다.
※ 중요한점은 메소드를 작성할 때에는 각 메소드마다 하나의 기능만을 수행하도록 작성하는것이 좋다.
[ 메서드의 정의 ]
public void main(String[] args) { }
// [접근제어자][반환타입][메소드명(매개변수)]
- 접근제어자 : 해당 메소드에 접근할 수 있는 범위를 명시.
- 반환 타입(Return Type) : 메소드가 모든 작업을 마치고 반환하는 데이터의 타입을 명시.
- 메소드 명 : 호출 시 사용하는 이름을 명시.
- 매개변수(Parameters) : 메소드 호출 시 전달되는 인수위 값을 저장할 변수를 명시
※ 메소드 시그니처(Method Signature)란?
- 메소드의 선언부에 명시되는 매개변수의 리스트를 가르킨다.
- 만약 두 메소드가 매개변수의 갯수와 타입, 순서까지 모두 같다면, 이 두 메소드의 시그니처는 같아고 할 수 있다.
[ 매개변수의 형태 ]
// 1. 매개변수가 있고, 리턴이 없음.
// main 메소드
public static void main(String[] args) {
System.out.println("== 1. main Mathod 시작 ==");
increment(5);
System.out.println("== 2. main Method 종료 ==");
}
// method 정의 형태
// 기능 : 인수로 받은 값을 1증가 후 출력
public static void increment(int num) {
System.out.println("== 3. increment Method 시작 ==");
num++;
System.out.println("1 증가된 값 : " + num);
System.out.println("== 4. increment Method 종료 ==");
}
// 2. 매개변수가 있고, 리턴이 있음.
public static void main(String[] args) {
System.out.println("sum : " + sum(2, 5));
}
// 기능 : 인수로 정수 2개를 받은 후, 덧셈 결과를 리턴
// 메소드명 : sum, 매개변수 : 2개
public static int sum(int num1, int num2) {
int result = num1 + num2;
return result; // method의 끝을 의미
}
// 3. 매개변수가 없고, 리턴이 없음.
public static void main(String[] args) {
showString();
}
// 기능 : 호출하면 문자열 출력
// 메소드명 : showString, 매개변수 : void
public static void showString() {
System.out.println("-------------------------------------");
System.out.println("showString() 메소드 실행됨");
System.out.println("-------------------------------------");
}
// 4. 매개변수가 없고, 리턴이 있음.
public static void main(String[] args) {
System.out.println(returnString());
}
// 기능 : 호출하면 문자열 리턴
// 메소드명 : returnString, 매개변수 : void
public static String returnString() {
return "안녕~~";
}
[ 예제 ]
class Car {
private int currentSpeed;
private int accelerationTime;
public void accelerate(int speed, int second) {
System.out.println(second + "초간 속도를 시속 " + speed + "(으)로 가속함!!");
}
}
- 예제를 보면 accelerate() Method를 정의하고있다.
- 해당 메소드에서 접근제어자로 public을 사용하여 선언되어 해당 객체를 사용하는 프로그램 어디에서나 직접 접근이 가능하다.
- 반환 타입에는 어떠한 값도 반환하지 않는다는 의미로 void를 사용하였다.
- 그 다음, 메소드의 이름을 명시하고, 매개변수로 int형인 변수를 전달받았다.
- 이렇게 전달받은 매개변수로 구현부에서 작업을 할 수 있다.
[ 메소드 호출방법 ]
// 1. 매개변수 없는 메소드호출 : 객체참조변수이름.메소드이름();
Car myCar = new Car();
// 2. 매개변수 있는 메소드호출 : 객체참조변수이름.메소드이름(매개변수1, ...);
Car myCar = new Car(60, 3);
- 위 예제를 호출할 시, 다음과 같이 사용할 수 있다.
[ 실제 사용 예시 ]
[ Car.Class ]
class Car {
private int currentSpeed;
private int accelerationTime;
public void accelerate(int speed, int second) {
System.out.println(second + "초간 속도를 시속 " + speed + "(으)로 가속함!!");
}
}
[ Car_Main.Class ]
public class Car_Main {
public static void main(String[] args) {
Car myCar = new Car(); // 객체 생성
mycar.accelerate(60, 3); // 메소드 호출단
}
}
위 메소드를 호출하여 사용하면 다음과 같은 결과를 얻을 수 있다.
실행결과 : 3초간 속도를 시속 60(으)로 가속함!!
'#Java' 카테고리의 다른 글
| Java 클래스(Class) (0) | 2024.04.03 |
|---|---|
| 오버로딩(Overloding) vs 오버라이딩(Overriding) (0) | 2024.04.03 |
| 메소드의 오버라이딩 (Method Overriding) (0) | 2024.04.03 |
| 메소드의 오버로딩 (Method Overloading) (0) | 2024.04.03 |
| String Pool이란 무엇인가? (0) | 2024.04.02 |