Java를 처음 배웠을 때는 변수, 조건문, 반복문, 데이터 타입 같은 기초 개념을 익히고, 기본적인 프로그램을 만들 수 있으면 충분하다고 생각했다. 하지만 클래스를 본격적으로 공부하면서 ‘이게 진짜 Java구나’라는 느낌을 받았다. 마치 처음에는 Java를 겉핥기만 했던 것 같고, 이제야 진짜 핵심을 마주한 기분이다.
클래스는 객체를 만들기 위한 설계도(blueprint) 또는 템플릿(template)이다. Java에서는 모든 코드가 클래스 안에 포함되며, 클래스를 기반으로 여러 개의 객체를 만들 수 있다.
만약 학생의 시험 점수를 관리하는 프로그램을 만든다고 가정하면, 학생(Student) 과 성적(Grade) 같은 개념이 필요하다.
✅ Student 클래스의 구성 요소
이렇게 클래스를 정의하면, 여러 명의 학생을 각각 객체로 만들어 관리할 수 있다.
객체는 클래스를 기반으로 생성된 실체(Instance) 이다.
즉, 클래스가 설계도라면 객체는 그 설계도를 기반으로 만들어진 실제 제품이다.
Java는 객체 지향 프로그래밍(Object-Oriented Programming, OOP) 언어다. 즉, 프로그램을 객체 단위로 구성하며, 각 객체는 서로 데이터를 주고받으며 협력한다.
은행의 예금 계좌를 클래스로 표현해 보자.
✅ SavingsAccount 클래스의 구성 요소
1. 필드(Fields, 상태)
각 은행 계좌를 객체로 만들면, 실제 계좌처럼 입출금이 가능하다.
class SavingsAccount {
String owner;
String accountNumber;
double balance;
// 생성자
public SavingsAccount(String owner, String accountNumber, double balance) {
this.owner = owner;
this.accountNumber = accountNumber;
this.balance = balance;
}
// 돈 입금
void deposit(double amount) {
balance += amount;
System.out.println(amount + "원이 입금되었습니다. 현재 잔액: " + balance);
}
// 돈 출금
void withdraw(double amount) {
if (balance >= amount) {
balance -= amount;
System.out.println(amount + "원이 출금되었습니다. 현재 잔액: " + balance);
} else {
System.out.println("잔액이 부족합니다.");
}
}
}
public class Main {
public static void main(String[] args) {
// 철수의 계좌 생성
SavingsAccount 철수계좌 = new SavingsAccount("철수", "12345", 50000);
// 입금 및 출금
철수계좌.deposit(10000);
철수계좌.withdraw(30000);
}
}
✅ 실행 결과
10000원이 입금되었습니다. 현재 잔액: 60000
30000원이 출금되었습니다. 현재 잔액: 30000
이처럼 클래스를 활용하면 현실 세계의 개념을 코드로 표현할 수 있고, 객체를 통해 데이터를 조작할 수 있다.
지금까지 main
메서드를 기준으로만 공부했다가, 이제 본격적으로 클래스를 만들고 객체를 다루는 방식을 배우니 너무 헷갈렸다.
public class HelloWorld {
public static void main(String[] args) {
// 프로그램 실행
}
}
✅ 여기서 main
메서드는 프로그램의 진입점(entry point)이었다.
✅ Java 프로그램을 실행하면, main()
메서드가 자동으로 실행되는 구조였다.
main()
없이 클래스만 정의하는 코드가 나왔다?!public class Store {
public void buyItems() {
// 물건을 사는 기능
}
}
🤔 이건 뭐지?
이제 객체지향 방식으로 Java를 다루기 시작한 거다!
코드 유형 | 역할 |
---|---|
main() 이 있는 코드 | 프로그램 실행을 위한 "시작점" |
main() 이 없는 코드 | "설계도" 역할을 하는 클래스 정의 |
Store
클래스는 "가게(Store)"를 표현하는 설계도일 뿐이다.Store
클래스를 어떻게 사용할까?이제 객체를 생성하고 buyItems()
메서드를 호출해야 한다.
👇 이렇게 main()
에서 Store
객체를 만들어야 실행할 수 있다.
public class Main {
public static void main(String[] args) {
// Store 객체 생성
Store myStore = new Store();
// buyItems() 메서드 호출
myStore.buyItems();
}
}
✅ 여기서 new Store();
를 통해 객체를 만들어야 비로소 클래스가 동작하는 거다!
✅ myStore.buyItems();
를 호출하면 buyItems()
의 코드가 실행된다.
main()
이 없던 이유지금까지는 main()
이 있는 코드만 봐서 당연하게 생각했지만,
Java에서는 클래스가 곧 설계도(blueprint) 라는 개념이다.
✔️ public class Store { ... }
→ "가게"라는 개념을 정의
✔️ public void buyItems() { ... }
→ "가게에서 물건을 사는 기능"을 정의
✔️ 하지만, 이건 실제 동작하는 프로그램이 아님!
✔️ 실제 프로그램을 만들려면 main()
에서 객체를 만들어서 사용해야 한다.
Store
같은 클래스 정의 new Store();
myStore.buyItems();
Java를 처음 배웠을 때는 변수, 조건문, 반복문, 데이터 타입 같은 기초 개념을 익히고, 기본적인 프로그램을 만들 수 있으면 충분하다고 생각했다. 하지만 클래스를 본격적으로 공부하면서 ‘이게 진짜 Java구나’라는 느낌을 받았다. 마치 처음에는 Java를 겉핥기만 했던 것 같고, 이제야 진짜 핵심을 마주한 기분이다.
클래스는 객체를 만들기 위한 설계도(blueprint) 또는 템플릿(template)이다. Java에서는 모든 코드가 클래스 안에 포함되며, 클래스를 기반으로 여러 개의 객체를 만들 수 있다.
만약 학생의 시험 점수를 관리하는 프로그램을 만든다고 가정하면, 학생(Student) 과 성적(Grade) 같은 개념이 필요하다.
✅ Student 클래스의 구성 요소
이렇게 클래스를 정의하면, 여러 명의 학생을 각각 객체로 만들어 관리할 수 있다.
객체는 클래스를 기반으로 생성된 실체(Instance) 이다.
즉, 클래스가 설계도라면 객체는 그 설계도를 기반으로 만들어진 실제 제품이다.
Java는 객체 지향 프로그래밍(Object-Oriented Programming, OOP) 언어다. 즉, 프로그램을 객체 단위로 구성하며, 각 객체는 서로 데이터를 주고받으며 협력한다.
은행의 예금 계좌를 클래스로 표현해 보자.
✅ SavingsAccount 클래스의 구성 요소
1. 필드(Fields, 상태)
각 은행 계좌를 객체로 만들면, 실제 계좌처럼 입출금이 가능하다.
class SavingsAccount {
String owner;
String accountNumber;
double balance;
// 생성자
public SavingsAccount(String owner, String accountNumber, double balance) {
this.owner = owner;
this.accountNumber = accountNumber;
this.balance = balance;
}
// 돈 입금
void deposit(double amount) {
balance += amount;
System.out.println(amount + "원이 입금되었습니다. 현재 잔액: " + balance);
}
// 돈 출금
void withdraw(double amount) {
if (balance >= amount) {
balance -= amount;
System.out.println(amount + "원이 출금되었습니다. 현재 잔액: " + balance);
} else {
System.out.println("잔액이 부족합니다.");
}
}
}
public class Main {
public static void main(String[] args) {
// 철수의 계좌 생성
SavingsAccount 철수계좌 = new SavingsAccount("철수", "12345", 50000);
// 입금 및 출금
철수계좌.deposit(10000);
철수계좌.withdraw(30000);
}
}
✅ 실행 결과
10000원이 입금되었습니다. 현재 잔액: 60000
30000원이 출금되었습니다. 현재 잔액: 30000
이처럼 클래스를 활용하면 현실 세계의 개념을 코드로 표현할 수 있고, 객체를 통해 데이터를 조작할 수 있다.
지금까지 main
메서드를 기준으로만 공부했다가, 이제 본격적으로 클래스를 만들고 객체를 다루는 방식을 배우니 너무 헷갈렸다.
public class HelloWorld {
public static void main(String[] args) {
// 프로그램 실행
}
}
✅ 여기서 main
메서드는 프로그램의 진입점(entry point)이었다.
✅ Java 프로그램을 실행하면, main()
메서드가 자동으로 실행되는 구조였다.
main()
없이 클래스만 정의하는 코드가 나왔다?!public class Store {
public void buyItems() {
// 물건을 사는 기능
}
}
이제 객체지향 방식으로 Java를 다루기 시작한 것이다!
코드 유형 | 역할 |
---|---|
main() 이 있는 코드 | 프로그램 실행을 위한 "시작점" |
main() 이 없는 코드 | "설계도" 역할을 하는 클래스 정의 |
public class Main {
public static void main(String[] args) {
// Store 객체 생성
Store myStore = new Store();
// buyItems() 메서드 호출
myStore.buyItems();
}
}
✅ new Store();
를 통해 객체를 만들어야 비로소 클래스가 동작한다!
✅ myStore.buyItems();
를 호출하면 buyItems()
의 코드가 실행된다.
Store
같은 클래스 정의 new Store();
myStore.buyItems();
Java를 처음 배울 때는 기본 문법만 이해하면 충분하다고 생각했지만, 객체와 클래스를 배우면서 Java의 진짜 모습을 알게 되었다. 아직 어렵지만, 객체지향 개념을 더 깊이 이해하면 코드의 재사용성과 유지보수성이 높아질 거라 기대된다.
앞으로 더 열심히 배워서 Java의 객체지향 프로그래밍을 완전히 내 것으로 만들어야겠다!
)을 정의하는 함수들
Java를 처음 배울 때는 기본 문법만 이해하면 충분하다고 생각했지만, 객체와 클래스를 배우면서 Java의 진짜 모습을 알게 되었다. 아직 어렵지만, 객체지향 개념을 더 깊이 이해하면 코드의 재사용성과 유지보수성이 높아질 거라 기대된다.
앞으로 더 열심히 배워서 Java의 객체지향 프로그래밍을 완전히 내 것으로 만들어야겠다!