1. 클래스(Class)
클래스는 객체(Object)를 만들기 위한 설계도
변수(속성)와 메서드(기능)를 한 곳에 묶어 관리
2. 메서드란?
**메서드(Method)**는 특정 작업을 수행하도록 독립적으로 작성된 코드 블록입니다.
기능을 한 덩어리로 묶어 필요할 때 호출해서 사용할 수 있습니다.
메서드 사용 목적
- 코드 재사용 → 같은 기능을 여러 번 작성할 필요 없음
- 가독성 향상 → 코드 구조가 보기 쉬움
- 유지보수 편리 → 기능별로 코드가 분리되어 수정이 쉬움
클래스의 기본 구성 요소
[접근제어자] class 클래스명 {
// ① 멤버변수(필드, 속성)
자료형 변수명;
// ② 생성자(Constructor)
클래스명(매개변수) {
// 객체 생성 시 실행되는 코드
}
// ③ 메서드(Method)
반환타입 메서드명(매개변수) {
// 기능 구현
return 값; // 반환타입이 void면 생략 가능
}
}
클래스와 메서드 예제1
public class Ex02_메서드 {
public static void main(String[] args) {
// main 메서드: 프로그램의 시작점
System.out.println(1);
System.out.println(2);
star(); // ★ star() 메서드 호출 (전달인자 없음)
System.out.println(3);
System.out.println(4);
star(); // 다시 호출
// ★ sub() 메서드 호출
// 전달인자: 40, 10, 7
int result2 = sub(40, 10, 7);
// ★ add() 메서드 호출
// 전달인자: 10, 20
int result = add(10, 20);
// 리턴값 출력
System.out.println("result : " + result); // 30
System.out.println("result2 : " + result2); // 23
System.out.println(5);
star();
}
// 📌 star 메서드
// 반환타입: void (값 반환 없음)
public static void star() {
System.out.println("*****");
System.out.println("=====");
return; // void에서는 생략 가능
}
// 📌 add 메서드
// 매개변수: int a, int b (호출 시 전달받는 값)
// 반환타입: int (계산된 합계 반환)
public static int add(int a, int b) {
int sum = a + b;
return sum; // 결과를 호출한 자리로 반환
}
// 📌 sub 메서드
// 매개변수: int c, int d, int e
// 반환타입: int (계산된 값 반환)
public static int sub(int c, int d, int e){
int solve = c - d - e;
return solve;
}
}
용어정리
| 메서드 정의 | 메서드를 만드는 것 | public static int add(int a, int b) { ... } |
| 메서드 호출 | 만든 메서드를 실행하는 것 | add(10, 20); |
| 매개변수(Parameters) | 메서드가 받는 입력 변수 | int a, int b |
| 전달인자(Arguments) | 호출 시 실제로 넘기는 값 | add(10, 20)의 10, 20 |
| 반환타입(Return type) | 메서드가 돌려주는 값의 자료형 | int, String, void |
| 반환값(Return value) | return으로 돌려주는 실제 값 | return sum; |
| void | 반환값이 없음 | public static void star() |
| main 메서드 | 프로그램 시작점 | public static void main(String[] args) |
작은 팁
- 메서드명은 동사형·소문자 시작 권장: printLine(), getSum()
- 반환타입이 void가 아닐 때는 return 필수
- 반복되는 출력/계산은 메서드로 분리하면 코드가 짧고 읽기 쉬움
클래스와 메서드 예제2
class Calculate{
int x; // 인스턴스 변수
int y; // 인스턴스 변수
static int z; // static변수
// 더하기 리턴하는 메서드 정의
public int add() { //인스턴스 메서드
return x+y;
}
// 곱하기 리턴하는 메서드 정의
public int multi() { //인스턴스 메서드
return x*y;
}
// 큰 값을 리턴하는 메서드 정의
public int max() { //인스턴스 메서드
if(x>y) {
return x;
}else {
return y;
}
}
// 메서드에도 static을 붙일 수 있다.
// static 메서드: 객체 생성 없이 호출 가능
public static void star() { //static메서드
System.out.println("*");
System.out.println(z); //static변수 안에서는 static변수만 사용할 수 있다.
}
}
public class Ex04_메서드 {
public static void main(String[] args) {
Calculate c1 = new Calculate(); // 객체(인스턴스)생성
c1.x= 2;
c1.y = 3;
System.out.println(c1.x);
System.out.println(c1.y);
// 다른 클래스의 메서드를 호출하고 리턴값 사용하기
// → 객체를 생성한 후, 해당 객체의 메서드를 통해 호출
// 더하기 메서드 호출
int result = c1.add();
System.out.println("add : " + result);
// 곱하기 메서드 호출
int result2 = c1.multi();
System.out.println("multi : "+ result2 );
// 큰 값을 리턴하는 메서드 호출
int maxNum = c1.max();
System.out.println("maxNum : " + maxNum);
// 클래스 이름으로 메서드를 접근할 수 있다.
c1.star();
Calculate.star();
}
}
- 인스턴스 변수(x, y) → 객체마다 다른 값 저장
- static 변수(z) → 모든 객체가 공유하는 값
- 인스턴스 메서드(add, multi, max) → 객체 생성 후 호출
- static 메서드(star) → 클래스명으로 직접 호출 가능, 인스턴스 변수는 접근 불가