[OOP] 객체 지향 4대 원칙

now_iz·2021년 5월 26일
0
post-thumbnail

객체 지향의 필요성

Q. 객체 지향 프로그래밍 왜 해야할까?

A. 유지보수성 + 재사용성 👍



✨ 객체 지향 4대 원칙

1. 캡슐화(Encapsulation)

정보 은닉

  • public : 모두가 접근 가능
  • protected : 상속 / 같은 패키지 내 클래스에서 접근 가능
  • default : 같은 패키지 내 클래스에서 접근 가능
  • private : 본인만 접근 가능

2. 상속(Inheritance)

재사용 => extends

  • 하위 클래스 - 상위 클래스
    • 하위클래스 is a kind of 상위클래스
    • 하위 클래스는 상위클래스 특성을 재사용하고, 확장한다.
    • 상위 클래스의 물려줄 특성이 많을수록 좋다 (LSP)
      • 상위 클래스가 너무 빈약하면, 불필요한 형변환이 자주 일어난다.
  • 인터페이스
    • 다중 상속 대신 도입
    • 어떤 객체가 해야할 일을 정의하는 추상 자료형
    • 구현 클래스 is able to 인터페이스 (ex. Runnable)
    • 인터 페이스는 구현을 강제할 메서드가 적을수록 좋다 (ISP)

3. 추상화(Abstraction)

모델링 => class

  • 클래스 VS 객체
    • 클래스 : 분류에 대한 개념 -> 같은 특성을 지닌 여러 객체를 총칭하는 집합의 개념 (ex.사람)
    • 객체 : 실체 -> 유일무이한 사물 (ex. 김연아)
  • 추상화
    : 구체적인 것을 분해해서 관심 영역 (애플리케이션 경계) 에 있는 특성만 가지고 재조합하는 것 (= 모델링)

4. 다형성 Polymorphism

사용 편의 => 오버라이딩, 오버로딩

  • 오버라이딩
    • 같은 메서드 이름 / 같은 인자 목록 / 상위 클래스의 메서드 재정의
    • 상위 클래스 타입의 객체 참조 변수에서 자동으로 하위 클래스가 오버라이딩한 메소드를 호출해 줌
  • 오버로딩
    • 같은 메서드 이름 / 다른 인자 목록 / 다수의 메서드 중복 정의


번외

Q. 실무에서는 클래스와 인터페이스 중에 어떤 걸 사용하는 게 좋을까?
✏️ 인터페이스
✏️ 클래스의 상속은 하위클래스가 100개라면, 상위클래스를 바꾸기 쉽지 않기 때문이다.

profile
👀

0개의 댓글