1. 캡슐화 (Encapsulation)
캡슐화는 데이터와 해당 데이터를 다루는 메소드를 하나로 묶는 것을 의미합니다. 이는 클래스라는 '캡슐' 내에 데이터와 함수를 담아 관리합니다.
캡슐화를 통해 클래스의 내부 데이터는 외부에서 직접 접근할 수 없으며, 오직 클래스 내부 메소드를 통해서만 접근할 수 있습니다. 이렇게 하면 데이터를 보호하고, 클래스의 내부 구현을 외부로부터 숨길 수 있습니다.
2. 상속 (Inheritance)
상속은 기존 클래스의 특징과 기능을 물려받아 새로운 클래스를 생성하는 것입니다. 이를 통해 코드의 재사용성을 높이고, 중복된 코드를 줄일 수 있습니다.
자바에서는 extends 키워드를 사용하여 상속을 구현합니다. 상속받는 클래스를 '하위 클래스' 또는 '자식 클래스', 상속하는 클래스를 '상위 클래스' 또는 '부모 클래스'라고 합니다.
3. 다형성 (Polymorphism)
다형성은 한 개체가 여러 가지 타입을 가질 수 있는 것을 의미합니다. 이를 통해 개체를 보다 일반적인 타입으로 다룰 수 있게 되며, 이로 인해 코드의 유연성과 확장성이 향상됩니다.
다형성은 메소드 오버로딩과 오버라이딩을 통해 구현됩니다. 오버로딩은 같은 이름의 메소드를 여러 개 정의하는 것이고, 오버라이딩은 상위 클래스의 메소드를 하위 클래스에서 재정의하는 것입니다.
4. 추상화 (Abstraction)
추상화는 복잡한 시스템을 간단한 개념으로 변환하는 프로세스입니다. 이를 통해 프로그래머는 복잡한 세부 사항을 무시하고 시스템의 핵심 기능에 집중할 수 있습니다.
자바에서는 abstract 키워드를 사용하여 추상 클래스를 정의하고, 이 클래스는 추상 메소드(구현되지 않은 메소드)를 포함할 수 있습니다. 이러한 추상 클래스는 직접 인스턴스화할 수 없으며, 대신 하위 클래스가 추상 메소드를 구현하고 이 클래스를 확장해야 합니다.
추상화는 복잡한 시스템을 더 쉽게 이해하고 관리할 수 있게 도와줍니다. 또한, 시스템의 다른 부분에 영향을 미치지 않고 독립적으로 개발하고 수정할 수 있도록 합니다.
'Java' 카테고리의 다른 글
객체지향 설계의 SOLID 원칙 5가지 (0) | 2023.05.25 |
---|---|
자바에서 @Autowire 대신 생성자 또는 @requiredargsconstructor 어노테이션 사용하기 : 그 이유와 특징 (0) | 2023.05.21 |
가비지 컬렉션(Garbage Collection) 종류 (0) | 2023.05.04 |
자바 11과 17 버전의 차이점 (0) | 2023.05.03 |
가비지 컬렉션(Garbage Collection) 이해하기 (0) | 2023.05.02 |