[Java] 클래스
2025. 4. 16. 13:11ㆍJava

객체 : 물리적으로 존재하거나 추상적으로 생각할 수 있는 식별 가능한 모든 것
- 객체는 속성과 기능으로 구성
- 객체는 서로의 메서드를 호출하여 상호작용하며, 이를 통해 프로그램이 구성됨
- 상호작용 시 객체들은 전달인자와 반환값으로 데이터를 주고받음
- 전달인자(매개값, Argument): 메서드를 호출할 때 전달하는 데이터
- 반환값(리턴값, Return Value): 메서드가 실행 후 돌려주는 결과값
![]()
객체 지향 프로그래밍 (Object-Oriented Programming, OOP)
- 객체들을 먼저 만들고, 이 객체들을 하나씩 조립해서 완성된 프로그램을 만드는 기법
- 코드의 재사용성과 유지보수성을 높이는 것이 장점
- 특징 : 추상화, 캡슐화, 상속, 다형성
클래스
- 객체를 생성(생성자)하고, 객체가 가져야할 데이터(필드)가 무엇이고, 객체의 동작(메소드)은 무엇인지 정의
- 필드, 생성자, 메소드 등으로 구성
public class Car {
// 필드 선언
String model;
int speed;
// 생성자 선언
Car(String model) {
this.model = model;
}
// 메소드 선언
void setSpeed(int speed) {
this.speed = speed;
}
}
Car myCar = new Car();
System.out.println("모델: " + myCar.model);
myCar.speed = 60; // 필드값 변경
- 필요시 매개변수를 달리하는 생성자를 여러개 선언하는 생성자 오버로딩 을 사용
- 생성자가 오버로딩되어 있을 경우, new 연산자로 생성자를 호출할 때 제공되는 매개값의 타입과 수에 따라 생성자가 결정
Car() { }
Car(String model) {
this.model = model;
}
Car(String model, String color) {
this.model = model;
this.color = color;
}
가변 길이 매개변수
- 메서드 호출 시 매개변수의 개수를 동적으로 지정할 수 있게 해주는 기능
// 가변 길이 매개변수
int sum(int... values) {
int sum = 0;
for(int i = 0; i < values.length; i++) {
sum += values[i];
}
return sum;
}
정적(static) 멤버
- 클래스에 고정된 멤버로서 객체 생성 없이 사용할 수 있는 필드와 메서드
- 정적 멤버는
static키워드를 사용하며, 클래스가 메모리에 로딩되는 시점에 JVM의 Method Area에 생성됨 - 정적 메서드 안에서는 인스턴스 멤버를 직접 사용할 수 없음
- this 키워드 사용 불가
- 객체가 필요 없는 공통적인 데이터나 기능을 정적으로 선언
final 필드
- 한 번 초기화되면 값을 변경할 수 없는 필드
Getter / Setter 메서드
- 접근 제한자(public, private, default, protected)에 따라서 접근을 제한하는 역할이 클래스마다 나뉘기 때문에 필요
- Getter: private 필드의 값을 반환하는 메서드 (외부에서 필드 값을 얻어감)
- Setter: private 필드의 값을 변경하는 메서드 (외부에서 필드 값을 변경함)
public class Person {
private String name; // private 필드
// Getter 메서드
public String getName() {
return name;
}
// Setter 메서드
public void setName(String name) {
this.name = name;
}
}
장점
- 데이터 은닉(Data Hiding): 필드를 private으로 선언하여 외부에서 직접 접근을 막음
- 유효성 검사: setter 메서드에서 데이터의 유효성을 검증할 수 있음
- 읽기 전용 필드 설정: getter만 제공하고 setter는 제공하지 않으면 읽기 전용 필드를 만들 수 있음
- 캡슐화 강화: 내부 구현을 숨기고 필요한 경우 구현 방식을 변경할 수 있음
싱글톤 패턴 (Singleton)
- 객체의 인스턴스가 오직 1개만 생성되는 것을 보장하는 디자인 패턴
- 클래스의 인스턴스가 하나만 생성됨 → 생성자를 private으로 만들어 외부 접근을 제한
- 생성된 인스턴스에 대한 전역 접근점을 제공 → 하나의 인스턴스를 외부에서 얻어가서 사용
참고자료
- ITYL 6기 수업자료
- https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS2574231088
- https://yoonhs98.tistory.com/entry/OOP-%EA%B0%9C%EB%85%90-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%EC%96%B8%EC%96%B4%EC%9D%98-4%EA%B0%80%EC%A7%80-%ED%8A%B9%EC%A7%95%EC%B6%94%EC%83%81%ED%99%94-%EC%BA%A1%EC%8A%90%ED%99%94-%EC%83%81%EC%86%8D-%EB%8B%A4%ED%98%95%EC%84%B1
'Java' 카테고리의 다른 글
| [Java] 컬렉션 자료구조 (1) | 2025.04.30 |
|---|---|
| [Java] Multi Thread (1) | 2025.04.29 |
| [Java] 제네릭 (0) | 2025.04.29 |
| [Java] 인터페이스 (1) | 2025.04.21 |
| [Java] 상속 (1) | 2025.04.17 |