Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- WebFlux
- 홈서버
- Quarkus
- 오픈소스 기여
- FCM
- S3
- bluegreen
- Security
- spring boot
- Interface
- http-only cookie
- n8n
- optional
- Kotlin
- lambda
- 오픈소스
- firebase
- coroutine
- 자동화
- 무중단배포
- Java
- Workflow
- class
- AI
- Claude
- functional interface
- gemini cli
- AWS
- GEMINI
Archives
- Today
- Total
빠르게 학습하고 빠르게 적용하자
자바 개념 정복하기- 클래스와 인터페이스 편 본문
자바 개념을 확실히 다잡고 진짜 제대로 알고쓰자는 의미에서 기록을 시작합니다.
내용은 학교 수업시간에 배운 내용을 바탕으로 저의 추가 지식을 더하고 검색을 통해 작성했습니다.
목차 (배운 내용)
- 클래스 개념 및 기본 구조
- 객체 타입변환 (업캐스팅과 다운캐스팅)
- 오버라이딩
- 인터페이스
- 예외
- 제네릭
- 컬렉션 프레임워크
클래스와 객체
💡 클래스
클래스(Class): 객체를 만들기 위한 '틀' 또는 '설계도'로, 속성(필드)과 기능(메서드)을 정의함.
클래스 밖에 올 수 있는 3가지
- package
- import
- 외부클래스 (external class)
클래스 안에 올 수 있는 4가지 (클래스 구성 요소)
- 필드
- 메서드
- 생성자: 객체 생성 기능, 클래스 이름과 동일해야 함
- 내부클래스 (inner class)
💡 객체
객체(Object): 클래스로부터 생성된 실체로, 인스턴스(Instance)라고도 함.
- 객체의 생성 및 활용
- 객체 생성: new 키워드를 통해 클래스를 인스턴스화하여 생성
- 생성된 객체는 힙(Heap) 메모리에 저장됨
객체 타입 변환
💡 업캐스팅
하위 클래스의 객체를 상위 클래스 타입의 참조 변수에 대입하는 것
- 업캐스팅은 항상 가능함
A a = new A();
B b = a;
💡 다운캐스팅
업캐스팅된 객체를 다시 원래의 하위 클래스 타입으로 변환하는 것
- 명시적인 타입 변환 필요
- 힙 메모리에 실제 객체가 존재해야만 가능
B b = new B();
A a = (A) b;
C c = new C();
B b2 = (B) c;
A a2 = (A) c;
A a = new A();
B b = (B) a; // 오류 발생
A a2 = new B();
B b2 = (B) a2; // 정상
C c = (C) a2; // 오류 발생
메서드 오버라이딩
💡 오버라이딩
부모 클래스로부터 상속받은 메서드를 자식 클래스에서 재정의하는 것
조건
- 부모 클래스의 메서드와 이름, 매개변수, 리턴 타입 동일
- 접근 제어자는 부모 클래스와 같거나 더 넓어야 함
특징
- static 메서드나 필드는 오버라이딩 불가
인터페이스 (Interface)
💡 인터페이스
목적
- 확장성, 유연성, 재사용성을 높이는 것이 핵심 목적
- 표준 규약 정의
- 다형성 구현
- 의존성 감소 (느슨한 결합)
- 다중 상속 대체
특징
- 필드: 자동으로 public static final 선언
- 메서드: 자동으로 public abstract 선언 (디폴트 메서드 제외)
- 인터페이스 자체만으로는 객체 생성 불가
interface A {
int a = 3;
void abc();
}
예외 처리 (Exception Handling)
💡 에러 (Error)
JVM 문제 등, 개발자가 해결할 수 없는 오류
💡 예외 (Exception)
개발자가 코드로 처리할 수 있는 오류
종류
- 일반 예외 (Checked Exception): 컴파일 시점 확인
- 실행 예외 (Unchecked Exception): 실행 중 발생 (RuntimeException)
처리 방법
- try-catch 블록 사용
- throws 키워드로 호출부에 예외 전가
제네릭 (Generics)
💡 제네릭 클래스
잘못된 타입 캐스팅으로 인한 RuntimeException 방지
특징
- 클래스 내부에서 사용할 데이터 타입을 외부에서 지정
- 컴파일 단계에서 강한 타입 체크 가능
class MyClass<T> {
T data;
}
컬렉션 프레임워크 (Collection Framework)
💡 컬렉션
동일한 타입의 데이터를 묶어서 관리하는 자료구조 클래스 및 인터페이스의 모음
- 데이터 저장 공간의 크기를 동적으로 관리
- 주요 인터페이스
- List: 순서 O, 중복 허용 (예: ArrayList)
- Set: 순서 X, 중복 불가 (예: HashSet)
- Map: 키-값 쌍 저장 (예: HashMap)