안녕하세요~ 경제적 자유입니다.
오늘은 Java의 클래스와 객체, 메서드, 메서드 오버로딩에 대해 정리해보려고 합니다.
더 자세히 공부하고 싶다면 아래 문서도 함께 참고해보세요.
- 참고 링크: https://www.programiz.com/java-programming/class-objects
- 참고 링크: https://www.programiz.com/java-programming/methods
- 참고 링크: https://www.programiz.com/java-programming/method-overloading
1. 클래스와 객체
Java는 객체 지향 프로그래밍 언어입니다.
간단히 말하면 프로그램을 여러 개의 객체로 나누어 생각하는 방식이라고 보면 됩니다.
Java에서는 이런 정보를 담고 행동을 정의하기 위해 클래스를 사용합니다.
클래스는 객체를 만들기 위한 설계도입니다.
그리고 그 설계도를 바탕으로 실제로 만들어진 것이 객체입니다.
클래스 = 설계도
객체 = 설계도로 만든 실제 대상
기본 문법
class 클래스이름 {
// 필드
// 객체가 가지는 데이터
// 메서드
// 객체가 할 수 있는 동작
}
클래스 안에는 보통 필드와 메서드가 들어갑니다.
필드는 객체가 가지는 데이터입니다. 메서드는 객체가 수행할 수 있는 동작입니다.
예제
class Person {
String name;
void introduce() {
System.out.println("안녕하세요. 제 이름은 " + name + "입니다.");
}
}
public class Main {
public static void main(String[] args) {
Person person = new Person();
person.name = "상구";
person.introduce();
}
}
// 실행 결과:
// 안녕하세요. 제 이름은 상구입니다.
위 코드에서는 Person이라는 클래스를 만들었습니다.
Person 클래스 안에는 name이라는 필드가 있고, introduce()라는 메서드가 있습니다.
그리고 main 메서드 안에서 new Person()을 사용해 실제 객체를 만들었습니다.
Person person = new Person();
이 문장은 Person 클래스를 바탕으로 person이라는 객체를 만드는 코드입니다.
그다음 person.name = "상구";를 통해 객체의 이름을 넣고, person.introduce();를 통해 객체가 가진 메서드를 실행했습니다.
즉, 클래스는 틀이고 객체는 그 틀로 만들어진 실제 값이라고 보면 됩니다.
2. 메서드
메서드는 특정 작업을 수행하는 코드 묶음입니다.
메서드는 코드를 깔끔하게 나누고, 같은 기능을 재사용할 때 사용합니다.
기본 문법
반환타입 메서드이름(매개변수) {
// 실행할 코드
return 반환값;
}
반환타입은 메서드가 실행된 뒤 돌려주는 값의 타입입니다.
만약 돌려줄 값이 없다면 void를 사용합니다.
메서드이름은 말 그대로 메서드의 이름입니다.
매개변수는 메서드가 실행될 때 외부에서 전달받는 값입니다.
예제
public class Main {
static void sayHello(String name) {
System.out.println(name + "님, 안녕하세요!");
}
public static void main(String[] args) {
sayHello("상구");
}
}
// 실행 결과:
// 상구님, 안녕하세요!
위 코드에서는 sayHello라는 메서드를 만들었습니다.
static void sayHello(String name)
여기서 String name은 메서드가 전달받는 값입니다.
main 메서드에서 sayHello("상구");를 실행하면 "상구"라는 문자열이 name으로 전달됩니다.
System.out.println("상구" + "님, 안녕하세요!");
// 상구님 안녕하세요!
값을 반환하는 메서드
이번에는 메서드가 값을 돌려주는 경우를 보겠습니다.
public class Main {
static String makeMessage(String name) {
return name + "님, Java 공부를 시작했습니다.";
}
public static void main(String[] args) {
String message = makeMessage("상구");
System.out.println(message);
}
}
// 실행 결과:
// 상구님, Java 공부를 시작했습니다.
이번 코드에서는 makeMessage 메서드가 문자열을 반환합니다.
그래서 반환 타입이 String입니다.
static String makeMessage(String name)
메서드 안에서 return을 만나면 그 값을 메서드를 호출한 쪽으로 돌려줍니다.
String message = makeMessage("상구");
이 코드는 makeMessage("상구")의 결과를 message 변수에 저장하는 흐름입니다.
즉, 메서드는 단순히 출력만 하는 것이 아니라, 계산하거나 조합한 결과를 다시 돌려줄 수도 있습니다.
3. 메서드 오버로딩
메서드 오버로딩은 같은 이름의 메서드를 여러 개 만드는 것입니다.
다만 아무렇게나 같은 이름을 사용할 수 있는 것은 아닙니다.
Java에서 메서드 오버로딩이 되려면 매개변수의 개수, 타입, 순서 중 하나가 달라야 합니다.
이럴 때 메서드 이름을 매번 다르게 만들기보다, 같은 이름을 유지하면서 매개변수만 다르게 만들 수 있습니다.
이것이 메서드 오버로딩입니다.
기본 문법
void 메서드이름(String name) {
// 문자열 하나를 받는 메서드
}
void 메서드이름(String name, int age) {
// 문자열 하나와 정수 하나를 받는 메서드
}
두 메서드는 이름이 같습니다.
하지만 첫 번째 메서드는 String 하나를 받고, 두 번째 메서드는 String과 int를 받습니다.
Java는 메서드를 호출할 때 전달된 값의 개수와 타입을 보고 어떤 메서드를 실행할지 판단합니다.
예제
public class Main {
static void introduce(String name) {
System.out.println("제 이름은 " + name + "입니다.");
}
static void introduce(String name, int age) {
System.out.println("제 이름은 " + name + "이고, 나이는 " + age + "살입니다.");
}
public static void main(String[] args) {
introduce("상구");
introduce("상구", 25);
}
}
// 실행 결과:
// 제 이름은 상구입니다.
// 제 이름은 상구이고, 나이는 25살입니다.
매개변수 타입이 다른 오버로딩
메서드 오버로딩은 매개변수의 개수뿐만 아니라 타입이 달라도 가능합니다.
public class Main {
static void printInfo(String name) {
System.out.println("이름: " + name);
}
static void printInfo(int age) {
System.out.println("나이: " + age);
}
public static void main(String[] args) {
printInfo("상구");
printInfo(25);
}
}
// 실행 결과:
// 이름: 상구
// 나이: 25
이번에는 printInfo라는 이름의 메서드가 두 개 있습니다.
하나는 String 타입을 받고, 다른 하나는 int 타입을 받습니다.
호출할 때 "상구"를 넣으면 문자열을 받는 메서드가 실행되고, 25를 넣으면 정수를 받는 메서드가 실행됩니다.
즉, Java는 전달된 값의 타입을 보고 어떤 메서드를 사용할지 결정합니다.
반환 타입만 다르면 오버로딩이 아니다
메서드 오버로딩은 반환 타입만 다르게 한다고 성립하지 않습니다.
public class Main {
static int getNumber() {
return 10;
}
// 오류 발생
// 반환 타입만 다르고 매개변수가 같기 때문에 오버로딩이 아니다.
static String getNumber() {
return "10";
}
public static void main(String[] args) {
System.out.println(getNumber());
}
}
위 코드는 메서드 이름도 같고, 매개변수도 없습니다. 차이는 반환 타입뿐입니다.
하지만 Java는 메서드를 구분할 때 반환 타입만으로 구분하지 않습니다.
그래서 오버로딩을 하려면 반드시 매개변수의 개수나 타입, 순서가 달라야 합니다.
마무리
오늘은 Java의 클래스와 객체, 메서드, 메서드 오버로딩에 대해 정리해봤습니다.
처음 main이라는 단어를 치게 되면 public statics를 보면서 클래스 안에 메서드를 만드는 것을 볼 수 있는데 그것이 무엇을 의미하는지 몰랐네요..
그래도 하나씩 알아가니 다행입니다.. 추가로 공부해야 할 것들은 아마 그 용어들의 의미와 심화 과정이지 않을가 싶네요
공부화이팅!

'웹 개발 > JAVA' 카테고리의 다른 글
| [Java(9)] 접근 제한자, this, final (0) | 2026.06.24 |
|---|---|
| [Java(8)] 생성자, static, string 클래스 (0) | 2026.06.24 |
| [Java(5)] 흐름제어: break, continue, switch (0) | 2026.06.18 |
| [Java(6)] 배열, 한번에 여러 값을 다루는 가장 기본적인 방법 (0) | 2026.06.18 |
| [Java(4)] 반복문, for문부터 do-while문까지 흐름으로 이해하기 (0) | 2026.06.18 |
