OOP 특징 - 추상화, 상속, 다형성, 캡슐화

svenskpotatis·2024년 8월 10일

추상화(Abstraction)

  • 객체의 공통적인 속성과 기능을 추출하여 정의
  • 함수, 변수, 클래스 모두 추상화
  • 추상화 클래스(abstract class): 추상화 method가 하나라도 있는 클래스
  • 인터페이스(interface): 추상화 클래스 안의 method 가 모두 추상화 method인 경우
    • 객체가 수행해야 하는 역할만을 규정하고, 실제적인 구현은 해당 인터페이스를 구현하는 각각의 객체들에게서 하도록 함.(overriding) (역할과 구현의 분리)

상속(Inheritance)

  • 기존의 클래스를 재활용하여 새로운 클래스를 작성
  • 클래스 간 공유된 수 있는 속성과 기능들을 상위 클래스로 추상화시켜, 해당 상위 클래로부터 확장된 하위 클래스들이 모두 상위 클래스의 속성과 기능을 사용할 수 있게 함
  • method overriding: 상위 클래스 내용 재정의

interface vs inheritance

  • interface: 규정한 역할을 하위 클래스에서 구체적으로 구현하도록 강제
  • inheritance: 상위 클래스에서 구체적인 내용 정의해 두고, 하위 클래스에서 재사용/선택적으로 재정의하여 사용 가능

다형성(Polymorphism)

  • 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질
  • 한 타입의 참조변수를 통해 여러 타입의 객체를 참조할 수 있도록 만듦 -> 상위 클래스 타입의 참조변수로 하위 클래스의 객체를 참조할 수 있도록 함
  • method overriding: 각각의 클래스에서 재정의하면, 같은 이름의 method가 상황에 따라 다른 역할 수행
  • method overloading: 하나의 클래스 내에서 같은 이름의 method 여러 개 중복해서 정의

캡슐화(Encapsulation)

  • 서로 연관 있는 속성과 기능들을 하나의 캡슐로 만들어 데이터를 외부로부터 보호
  • 각 객체 고유의 독립성과 책임 영역을 안전하게 지키고자 함
  • 데이터 보호(data protection): 외부로부터 클래스에 정의된 속성과 기능들을 보호
  • 데이터 은닉(data hiding): 내부의 동작을 감추고 외부에는 필요한 부분만 노출
  • 접근제어자(java): public, default, protected, private
  • getter, setter

references
객체 지향 프로그래밍의 4가지 특징ㅣ추상화, 상속, 다형성, 캡슐화
Polymorphism, Encapsulation, Data Abstraction and Inheritance in Object-Oriented Programming

0개의 댓글