애플리케이션 개발/JAVA

[JAVA] OOP 객체 지향 4대 원칙

sofiaaa 2022. 3. 28. 21:45
반응형

객체지향 프로그래밍을 해야 하는 이유?

유지 보수성 + 재사용성

 

캡슐화

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

 

캡슐화를 하는 이유?

캡슐화를 하는 이유는 정보 은닉이다.

외부에서 내부의 정보에 접근하거나 변경할 수 없게 직접적인 접근을 막고,

객체가 제공하는 필드와 메소드를 통해서만 접근이 가능하다.

 

상속

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

 

 

추상화

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

 

다형성

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

 

 

https://velog.io/@now_iz/OOP-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5

 

[OOP] 객체 지향 4대 원칙

✨ 객체 지향 4대 원칙

velog.io

 

반응형