자바는 객체지향 언어입니다.
객체지향이라는 말은 무엇일까요? 바로 생성해낸 객체들끼리의 상호작용을 통해 동작되는 언어입니다.
자바에서는 이런 객체들을 중심으로 코드를 구성하게되며, 이 과정에서 다양한 특징들이 나타납니다.
총 4가지의 주요 특징들이 나타나는데 순서대로 정리해보겠습니다.
1. 상속
- 부모와 자식의 관계를 설정할 수 있음.
- extends 키워드를 사용해서 부모의 클래스에 존재하는 필드와 메소드를 상속받아 자식 클래스에서 상속받은 메소드를 오버라이딩(재정의) 하여 자신에게 맞게 기능을 수정할 수 있음.
- 다형성을 구현하기 위한 수단 중 하나임.
2. 다형성
- 자바에서는 같은 이름의 메소드가 상황에 따르게 다르게 동작해야할 필요가 있음
- 부모클래스의 메소드를 자식클래스에서 오버라이딩 (재정의) 하거나 같은 이름의 메소드를 매개변수만 다르게 오버로딩(정의)하는 방식이 있음.
- 상속에서는 오버라이딩(재정의)을 통해 다형성을 구현하며, 다형성은 오버로딩(정의)을 통해 메소드의 매개변수에 따라 다른 동작을 하게 될 수 도 있음.
3. 추상화
- 자바에서는 추상화를 위해 인터페이스라는 개념이 존재함.
- 이 인터페이스를 생성하게 되면 메소드의 선언(추상 메소드)만 포함하고, 실제 동작은 구현하는 클래스에서 정의함.
- 여러 클래스가 동일한 인터페이스를 구현함으로써, 서로 다른 코드를 작성하더라도 공통된 타입을 다룰 수 있어서 유연해짐.
4. 캡슐화
- private 이라는 키워드가 존재하는데, 이 키워드를 사용하면 해당 클래스에서만 객체를 사용할 수 있음.(다른 클래스에서 접근 불가, 클래스 내부 데이터 보호)
- 이 객체의 변수와 메소드를 하나로 묶어서 외부에서 쉽게 접근하지 못하게 보호하는 역할을 함.
- 만약 외부에서 객체의 데이터를 직접 수정할 수 있다면, 클래스의 상태가 예기치 않게 변경될 수 있음.
- 이렇게 되면 다른 클래스나 객체에서 의도치 않게 데이터가 수정되거나, 불일치가 발생할 수 있음.
- 이런 무분별한 데이터 수정은 코드의 일관성을 잃게 하고, 버그나 예상치 못한 이슈가 생길 수 있어 유지보수를 어렵게 만듬
- 캡슐화로 묶어서 관리하게 되면 코드의 일관성이 유지되고, 결국 유지보수가 쉬워짐
- 다른 클래스에서 캡슐화된 객체와 메소드들을 사용하고 싶으면, 캡슐화된 클래스에 getter와 setter를 이용해 간접적으로 사용할 수 있음.
'JAVA' 카테고리의 다른 글
| [Java] Java 의 주요 특징 (2) | 2025.04.17 |
|---|---|
| [JDK | JRE] JDK 와 JRE 의 차이는 무엇일까? (2) | 2025.04.16 |
| [JVM] JVM이 무엇일까? (0) | 2025.04.16 |
| [복습] GetMapping 과 RequestMapping 의 차이 (0) | 2025.04.15 |
| [복습]어노테이션 @Controller 와 @RestController 의 차이 (0) | 2025.04.15 |