[자바] | OOP의 4가지 특징

제롬·2022년 3월 23일
0

추상화

불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 공통의 특징(속성 ,기능)들을 하나로 묶어 표현하는 방법.

  • 역할(인터페이스, 추상클래스)와 구현(인터페이스르 구현한 클래스, 구현 객체)을 분리한다.
  • 객체가 가진 특성중 필수 속성만으로 객체를 묘사하고 유사성만을 표현하여 세부적인 사항은 각 객체에 따라 다르게 구현되도록 할 수 있다.

캡슐화

객체의 데이터와 메서드를 하나로 묶어서 외부의 다른 객체들로부터 객체 내부의 구현을 감추고 사용법만 제공하는 것을 말한다. 각 객체는 고유한 데이터를 가지고 있는데 이런 데이터를 다른 객체에게 제공할지를 캡슐화를 통해 결정한다. 다시 말해 객체 외부에서는 객체 내부정보에 직접 접근하거나 조작할 수 없고 외부에서 접근할 수 있도록 정의된 오퍼레이션(getter, setter)을 통해서만 관련 데이터에 접근할 수 있다.

  • 캡슐화된 객체의 내용이 외부에 드러나지 않아서 코드변경이 발생할 때 그로 인한 오류발생 위험이 적다.
  • 캡슐화된 객체들은 재사용이 용이하다.
  • 캡슐화된 객체들은 서로간에 메시지를 주고받을때 객체 내부 로직은 알필요가 없기 때문에 인터페이스가 단순해지고 객체간 결합도가 낮아진다.

다형성

하나의 객체가 여러가지 타입을 가질 수 있는 성질을 말한다. 상속 관계에 있을 때 상위클래스의 타입으로 하위 클래스의 객체를 레퍼런스 할 수 있다. 다형성을 구현하는 방법에는 오버로딩, 오버라이딩, 함수형 인터페이스가 있다.

[다형성 예제코드]

SuperClass so = new SubClass1(); → 가능 ( 부모타입의 자식생성자) → 묵시적 upcasting
SubClass1 sso = new SuperClass(); → 불가능 ( 자식타입의 부모생성자)
SubClass1 ssso = new SubClass2(); → 불가능 ( 자식타입의 자식생성자)

[다형성 구현 방법]

  • 오버로딩(Overloading) : 같은 이름의 메서드를 매개변수 개수, 타입, 순서만 다르게하여 새롭게 정의하는 기술.
  • 오버라이딩(Overriding) : 상위 클래스가 가지고 있는 메서드를 하위 클래스에서 재정의하는 기술

상속

기존 클래스를 수정하지 않으면서 기존 클래스에 이미 정의되어 있는 내용을 확장해서 사용할 수 있는 방법을 제공하는 기술이다.

  • 상속은 하위클래스가 상속받는 상위 클래스의 개수에 따라 단일 상속과 다중 상속으로 구분하지만 자바는 다중 상속을 지원하지 않는다.
  • 상속을 받은 하위클래스는 상위 클래스의 특성과 기능을 사용할 수 있다.
  • 기능의 일부분을 변경하는 경우, 자식클래스에서 수정하여 사용할 수 있다.
  • 코드의 중복을 제거해준다.
  • 코드의 재사용이 용이하다.
  • 생성자는 상속이 되지 않기때문에 호출이 필요하다.

0개의 댓글