🧭 목차
- 자바(Java)란?
- 자바의 주요 특징
- 자바의 객체지향 4대 특성
1. 자바(Java)란?
자바(Java)는 1995년, **썬 마이크로시스템즈(Sun Microsystems)**의 **제임스 고슬링(James Gosling)**을 비롯한 연구진들이 개발한 객체 지향 프로그래밍 언어입니다.
원래는 가전제품의 내장 소프트웨어를 위해 개발되었지만,
지금은 웹 애플리케이션, 모바일 앱(Android), 데스크톱 앱 등
다양한 분야에서 가장 널리 사용되는 언어 중 하나입니다.
2. 자바의 특징
● 객체 지향 언어 (Object-Oriented)
- 절차 지향과 달리 기능 단위를 **객체(Object)**로 구성
- 객체 간 협력으로 프로그램 동작
- 유지보수 및 재사용에 유리
● 인터프리터 + 컴파일 언어
- .java → 컴파일 → .class(바이트 코드) → JVM에서 실행
- 실행 시 인터프리트 방식으로 동작
● 플랫폼 독립성
- 한번 작성하면 어떤 OS에서도 실행 가능
- 이유: **JVM(Java Virtual Machine)**이 각 OS에 맞게 동작
● 자동 메모리 관리 (Garbage Collection)
- 개발자가 직접 메모리 해제할 필요 없음
- 불필요한 객체는 GC가 자동 정리
● 멀티 쓰레딩 지원
- 여러 작업을 동시에 처리 가능
- 운영체제마다 쓰레드 API가 달라도, 자바는 자바 API로 일관성 유지
● 동적 바인딩
- 필요한 객체만 생성
- 런타임에 동적으로 클래스 및 메소드 결정
3. 자바의 객체지향 4대 특성
🔒 캡슐화 (Encapsulation)
- 관련 데이터와 메소드를 클래스로 묶음
- 외부 접근 제한 (정보 은닉)
| public | 외부/내부 모두 접근 가능 |
| protected | 상속받은 클래스에서 접근 가능 |
| default | 같은 패키지 내에서 접근 가능 |
| private | 클래스 내부에서만 접근 가능 |
👪 상속 (Inheritance)
- 기존 클래스(부모)의 기능을 재사용
- 자식 클래스는 extends 키워드로 상속
- 모든 클래스는 Object 클래스 상속
- 자바는 단일 상속만 허용
- Is a: 상속 관계 (예: Student is a Person)
- Has a: 포함 관계 (예: Car has a Tire)
📦 추상화 (Abstraction)
- 공통된 속성과 기능만 추출
- 복잡한 구현은 감추고, 필요한 인터페이스만 공개
- 추상 클래스 또는 인터페이스로 구현
🔄 다형성 (Polymorphism)
- 하나의 인터페이스로 다양한 구현
- 대표적인 두 가지 형태:
▪ 오버라이딩 (Overriding)
- 부모 메소드를 재정의
- @Override 어노테이션 사용
- 조건: 이름, 매개변수, 리턴타입 동일
▪ 오버로딩 (Overloading)
- 같은 이름의 메소드를 여러 버전으로 정의
- 조건: 매개변수의 수나 타입이 달라야 함
✅ 마무리
자바는 배우기 쉬우면서도, 실무에서 가장 강력한 도구 중 하나입니다.
웹 백엔드, 안드로이드 앱, 클라우드 서비스 등 어디서나 만나볼 수 있죠.
객체지향의 강력한 특성과 다양한 기능들 덕분에 오늘날도 여전히 인기 있는 언어입니다.
💡 다음 포스팅 예고
✅ JVM, JDK, JRE 차이 완전 정리
'Programming > JAVA' 카테고리의 다른 글
| 📌Java static 키워드 완벽 정리: 메모리 구조부터 예제까지 한눈에! (0) | 2022.10.30 |
|---|---|
| 💡 프로그램 vs 프로세스 vs 스레드 완전 정리 (자바 스레드 포함) (0) | 2022.10.29 |
| 📌 객체지향 언어란? 클래스와 객체, 그리고 자바의 핵심 개념 총정리 (0) | 2022.10.27 |
| 🔥 Java 컬렉션 프레임워크, 아직도 배열만 씁니까? (0) | 2022.10.27 |
| [동시성 이슈해결] HashMap보다는 ConcurrentHashMap을 쓰자! (0) | 2022.10.27 |
