공부 기록/Java with ChatGPT
[Java/ChatGPT] Day 2: 클래스와 객체, 메서드
dev.jelee
2025. 6. 9. 17:57
[ 학습 목표 ]
- 클래스와 객체란?
- 필드(멤버 변수)와 메서드
- 생성자(Constructor)
- 객체 생성 및 사용법
- 메서드 매개변수와 반환값
[ 이론 ]
1. 클래스(class)란?
- 객체를 만들기 위한 설계도
- 예: 사람이라는 클래스를 만들면, 홍길동, 김영희는 객체(instance)
- name, age는 필드(field)라고 한다.
=> 객체의 속성을 저장하는 변수 - introduce()는 메서드(method)라고 한다.
=> void를 붙이면 이 메서드는 아무 것도 반환하지 않는다는 의미다.
public class Person {
String name;
int age;
void introduce() {
System.out.println("안녕하세요. 제 이름은 " + name + "이고, 나이는 " + age + "살입니다.");
}
}
2. 객체 생성
- Person() 클래스가 있고, 이를 토대로 p1이라는 인스턴스. 즉 객체를 만드는 것이다.
public class Main {
public static void main(String[] args) {
Person p1 = new Person();
p1.name = "홍길동";
p1.age = 25;
p1.introduce();
}
}
3. 생성자(Constructor)
- 생성자는 class와 동일한 이름이어야 한다.
- 파라미터(매개변수)에 아무것도 없으면 기본 생성자이다.
- 파라미터에 1개만, 2개 다 넣을 수도 있다.
- new 키워드를 통해 객체를 만들 때 실행된다.
- 객체의 초기 상태를 설정하는데 사용된다.
- 메서드 처럼 생겼지만 반환 타입이 없다.
- 객체 생성 시에만 호출된다.
- 오버로딩 가능하다.
public class Person {
String name;
int age;
// 생성자
Person(String n, int a) {
name = n;
age = a;
}
void introduce() {
System.out.println("이름: " + name + ", 나이: " + age);
}
}
public class Main {
public static void main(String[] args) {
Person p1 = new Person("김코딩", 24);
p1.introduce();
}
}
[ 실습 ]
실습 1. Car 클래스를 만들고 객체를 사용해보기
public class Car {
String brand;
int year;
Car(String brand, int year) {
this.brand = brand;
this.year = year;
}
void info() {
System.out.println(year + "년식 " + brand + " 자동차입니다.");
}
}
public class Main {
public static void main(String[] args) {
Car myCar = new Car("현대", 2020);
myCar.info();
}
}
실습 2. 사용자 정의 클래스 Student 만들기
요구사항
- 필드: 이름, 나이, 학번
- 메서드: 자기소개 (introduce()), 학번 출력 (printStudentId())
내가 작성한 코드 ▼
public class Student {
String name;
int age;
int studentId;
Student (String name, int age, int studentId) {
this.name = name;
this.age = age;
this.studentId = studentId;
}
void introduce() {
System.out.println("안녕하세요. 제 이름은 " + name + "입니다. 나이는 " + age + "살 입니다.");
}
void printStudentId() {
System.out.println("제 학번은 " + studentId + "입니다.");
}
}
[ 자가 테스트 문제 ]
1. Book 클래스 만들어보기
- 필드: 제목(String), 저자(String)
- 생성자에서 초기화
- printInfo() 메서드로 정보 출력
public class Book {
String title;
String author;
Book(String title, String author) {
this.title = title;
this.author = author;
}
void printInfo() {
System.out.println("제목: " + title + ", 저자: " + author);
}
}
public class Main {
public static void main(String[] args) {
Book book = new Book("개미", "베르나르 베르베르");
book.printInfo();
}
}
2. Calculator 클래스를 만들어보세요.
- 메서드: add(int a, int b), subtract, multiply, divide
- 결과를 출력하는 메서드
public class Calculator {
// Stateless 설계
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int multiply(int a, int b) {
return a * b;
}
double divide(int a, int b) {
if (b == 0) {
throw new ArithmeticException("0으로 나눌 수 없습니다.");
}
return (double) a / b;
}
}
public class Main {
public static void main(String[] args) {
Calculator cal = new Calculator();
System.out.println(cal.add(1, 4));
System.out.println(cal.subtract(1, 4));
System.out.println(cal.multiply(1, 4));
System.out.println(cal.divide(1, 4));
}
}
[ 메모 ]
- 클래스와 객체 관계 요약
클래스 | 객체 |
설계도 | 실체 |
정의만 존재 | 실제 동작 가능 |
추상적 | 구체적 |
메모리에 저장되지 않음 | 메모리에 생성 됨 |