-
추상화(Abstraction), 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism)language/JAVA 2023. 4. 25. 15:00반응형
추상화(Abstraction)
Abstract 라는 단어의 어원은 라틴어 abstractus 에서 왔고, 이 단어는 from 의 의미를 가진 ab- 와 draw off 의 의미를 가진 trahere 의 합성어 이다.
어원에서 부터 이 단어의 의미를 생각해 보면 무엇으로 부터 어떤 것을 빼낸다는 것이다. 쉽게 생각해 보면 어떤 대상으로 부터 필요한 것을 추출한다는 의미를 가지고 있다고 볼 수 있다.
OOP에서 말하는 추상화(Abstraction)의 개념도 이 단어가 가진 의미를 그대로 담고 있다. 복잡한 시스템에서 필요한 부분만 추출하여 단순화 하여 본질적이고 공통적인 부분만 남게 만드는 것이다.
사용자는 추상화를 통해 단순화 된 개념을 사용해 사용자의 본래 목적에 더 집중할 수 있게 된다.
캡슐화(Encapsulation)
연관된 데이터와 메서드를 하나의 캡슐(일반적으로는 클래스)에 넣어 보호하는 것을 의미한다. 캡슐화를 통해 외부에서 접근을 제한하게 되면 데이터를 보호하고 내부의 작동 방식을 은닉할 수 있게 된다.
사용자는 캡슐화 된 데이터에 직접 접근할 수 없을 뿐 아니라 동작 방법도 알 필요가 없다. 이런 방법은 보안성을 높이고 객체간의 결합도를 낮추어 유연한 프로그래밍을 하는데 도움이 된다.
자바에서는 접근제어자를 통해 캡슐화를 구현할 수 있다.
상속(Inheritance)
상속은 하나의 클래스의 내용을 확장하여 다른 클래스를 구성할 수 있는 기능이다. 하위 클래스의 인스턴스는 상위 클래스를 그대로 확장하기 때문에 상위 클래스의 코드를 재사용할 수 있다는 장점이 있다.
다형성(Polymorphism)
객체가 문맥에 따라 다른 형태를 취할 수 있는 성질을 의미한다. 이는 OOP 의 개념중 가장 중요한 개념이라고 할 수 있다.
예를 들어 다형성 객체는 부모 클래스나 하위 클래스처럼 동작하거나 인터페이스의 구현체 처럼 동작할 수 있습니다. 다형성을 사용하면 코드의 유연성과 재사용성을 높이고 런타임에 메서드를 동적으로 바인딩할 수 있습니다.
반응형'language > JAVA' 카테고리의 다른 글
Inner Class 를 쓸때는 static 으로 만들자 (0) 2023.03.24 생성자나 열거타입으로 싱글턴임을 보증하라 (0) 2021.01.29 [이펙티브 자바] 생성자 대신 정적 팩터리 메서드를 고려하라 (0) 2021.01.28 Stream, generate(), limit(), distinct(), sorted() (0) 2021.01.24 JAVA Enum(열거 타입) 값 비교하기 (0) 2021.01.22