개발
Day 26 - Stream
·2분 읽기
이 글은 2026년 04월 07일 작성된 글입니다.
오늘은 자바 객체지향 개념(추상 클래스, 다형성, 생성자)과 Stream API 기초를 간단히 정리했다.
1. 추상 클래스와 다형성
전사가 사용하는 무기에 따라 공격 방식이 달라지도록 구현한다.
class 전사 {
String 이름;
int 나이;
무기 a무기;
void 공격() {
a무기.작동(이름, 나이);
}
}
abstract class 무기 {
String 무기명;
void 작동(String 이름, int 나이) {
System.out.println(나이 + "살 전사 " + 이름 + "(이)가 " + 무기명 + "(으)로 공격합니다.");
}
}
class 칼 extends 무기 {
칼() { 무기명 = "칼"; }
}
class 활 extends 무기 {
활() { 무기명 = "활"; }
}핵심
abstract class: 직접 객체 생성 불가- 자식 클래스에서 기능을 구현
- 무기 교체로 행동이 바뀌는 다형성 구조
2. return
메서드는 return을 통해 값을 반환한다.
static int get정수() {
return 5;
}특징
- 값을 반환하며 메서드 종료
- 객체나
null도 반환 가능
3. 생성자
객체 생성 시 자동 실행되는 메서드.
class 사람 {
String 이름;
int 나이;
사람() {
이름 = "홍길동";
나이 = 22;
}
사람(String 이름, int 나이) {
this.이름 = 이름;
this.나이 = 나이;
}
}특징
- 클래스 이름과 동일
- 반환 타입 없음
- 객체 생성 시 자동 호출
4. 생성자 호출 구조
객체 생성 시 부모 생성자 → 자식 생성자 순서로 실행된다.
class 동물 {
동물() {
System.out.println("동물 생성");
}
}
class 사람 extends 동물 {
사람() {
super();
System.out.println("사람 생성");
}
}5. this()
같은 클래스의 다른 생성자를 호출할 때 사용한다.
class 전사 {
String 이름;
int 나이;
전사() {
this("NoName");
}
전사(String 이름) {
this.이름 = 이름;
나이 = 20;
}
}6. Stream API 기초
컬렉션 데이터를 간결하게 처리하는 기능.
기본 사용
IntStream.rangeClosed(1, 10)
.forEach(System.out::println);filter
IntStream.rangeClosed(1, 10)
.filter(e -> e % 2 != 0)
.forEach(System.out::println);map
int[] result = Arrays.stream(numbers)
.map(e -> e * 2)
.toArray();특징
- 데이터 변환 처리에 강함
- 원본 데이터는 변경되지 않음
✅ 정리
- 추상 클래스와 다형성을 이용해 유연한 구조를 만들 수 있다.
- 생성자는 객체 생성 시 자동 실행된다.
this()와super()로 생성자 흐름을 제어할 수 있다.- Stream API를 사용하면 데이터를 더 간결하게 처리할 수 있다.