객체를 만들 때 가장 먼저 호출되는 것이 **생성자(Constructor)**입니다.
또한 객체 내부 값을 다룰 때 필수로 사용되는 키워드가 this,
정보 은닉을 위해 꼭 필요한 것이 **접근제어자(private, public)**입니다.이번 글은 Java OOP(객체지향)의 기반을 다지는 매우 중요한 내용들로 구성되어 있습니다.
📌 목차
- 생성자(Constructor)란?
- 기본 생성자
- 매개변수 있는 생성자
- this 키워드
- 접근제어자(private, public)
- Getter / Setter 개념
- 실전 클래스 예제
- 자주 하는 실수
- 마무리
- 대표 태그
1️⃣ 생성자(Constructor)란?
생성자는 객체가 생성될 때 자동으로 호출되는 메서드입니다.
특징:
- 이름이 클래스명과 동일
- 반환타입 없음(void조차 없음)
- 객체 생성과 동시에 실행되는 초기 설정 담당
✔ 생성자 예제
public class Person {
String name;
int age;
public Person() { // 생성자
System.out.println("Person 객체 생성됨");
}
}
2️⃣ 기본 생성자 (Default Constructor)
클래스에 생성자를 작성하지 않으면,
Java가 자동으로 기본 생성자를 만들어줍니다.
public Person() { }
3️⃣ 매개변수 있는 생성자
객체 생성 시 값을 자동으로 설정하고 싶을 때 사용합니다.
public class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
사용:
Person p = new Person("Tom", 20);
4️⃣ this 키워드 (매우 중요)
this는 현재 객체 자기 자신을 의미하는 키워드입니다.
보통 매개변수 이름과 필드 이름이 같을 때 구분하기 위해 사용합니다.
public Person(String name, int age) {
this.name = name; // 필드 = 매개변수
this.age = age;
}
✔ this의 또 다른 용도
생성자에서 다른 생성자를 호출 가능:
✔ this의 또 다른 용도
생성자에서 다른 생성자를 호출 가능:
5️⃣ 접근제어자(Access Modifier)
접근 범위를 지정하는 키워드입니다.
| 제어자 | 의미 |
| private | 클래스 내부에서만 접근 가능 |
| default | 같은 패키지에서 접근 가능 (키워드 없음) |
| protected | 같은 패키지 + 상속 관계 |
| public | 어디서나 사용 가능 |
실무에서는 대부분 필드는 private,
메서드는 public으로 구성합니다.
이유: 정보 은닉 → 객체의 무결성 유지
6️⃣ Getter / Setter
private 필드를 외부에서 읽거나 수정하기 위해 사용합니다.
public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
7️⃣ 실전 예제 — 생성자 + this + 접근제어자
public class Car {
private String model;
private int speed;
// 매개변수 있는 생성자
public Car(String model, int speed) {
this.model = model;
this.speed = speed;
}
// Getter
public String getModel() {
return model;
}
// Setter
public void setSpeed(int speed) {
this.speed = speed;
}
public void drive() {
System.out.println(model + " 속도: " + speed);
}
}
사용:
Car c = new Car("Hyundai", 120);
c.drive();
c.setSpeed(150);
c.drive();
8️⃣ 자주 하는 실수
❌ 생성자 이름을 다르게 작성
생성자 이름은 반드시 클래스명과 동일해야 함.
❌ 생성자에서 return 사용
생성자는 값을 반환하지 않음.
❌ private 필드를 직접 접근하려는 경우
Car c = new Car("A", 100);
c.speed = 50; // 오류!
Setter를 사용해야 함.
❌ “this”를 잘못 이해
this.name = name;에서
= 왼쪽: 필드 / 오른쪽: 매개변수
9️⃣ 마무리
이번 글로 Java 객체지향의 핵심 요소들을 완전히 이해할 수 있습니다.
✔ 생성자
✔ 매개변수 생성자
✔ this 키워드
✔ 접근제어자(private/public)
✔ Getter / Setter
✔ 정보 은닉 개념
다음 단계는 객체지향의 꽃인 **상속(Inheritance)과 다형성(Polymorphism)**입니다.
📘 다음 글 예고
👉 Java 기초 (10) — 상속, 오버라이딩, 오버로딩 완전 정리
'개발(React | Java) > 자바 기초 | 문법' 카테고리의 다른 글
| 인터페이스(Interface) & 추상 클래스(Abstract Class) 완전 정리 — OOP 핵심 (0) | 2025.12.08 |
|---|---|
| 상속(Inheritance), 오버라이딩(Overriding), 오버로딩(Overloading) 완전 정리 (0) | 2025.12.07 |
| 클래스(Class)와 객체(Object) 기초 — Java의 핵심 개념 (0) | 2025.12.06 |
| 메서드(함수) 개념과 사용법 — 재사용 가능한 코드 만들기 (0) | 2025.12.06 |
| 배열(Array) 기본부터 활용까지 — 반복문과 함께 쓰는 가장 중요한 자료구조 (0) | 2025.12.05 |