Abstraction

공통점을 모으고 차이점을 버리는것을 Abstraction 이라고 한다.

예를 들어, 총의 종류가 여러가지라도, trigger 가 존재한다는 것은 모두 동일하다.

interface 인 Guntrigger method 를 정의한다면, 이를 inheritance 한 class 들은 trigger method 가 공통적으로 구현되어야 한다.

interface 를 사용하면 Declare 과 implement 를 분리시킬 수 있다.(A class 가 변경되어도 B class 는 interface 에 의존하므로 변경하지 않아도 된다)

Encapsulation

데이터를 외부에서 접근하는 것을 방지하고, 내부적으로만 사용되는 부분을 감추기 위한 것

  1. access modifier
  2. Tell, Don’t Ask
if(acc.getMembership() == REGUALR) { ❌
  ... 
}
if(acc.hasRegularPermission()) { ⭕
  ...
}

Polymorphism

Type 이 불일치 하더라도, inheritance 관계이기 때문에 parent type 으로 child type 을 다룰 수 있는 것

e.g. Object 를 inheritance 한 object 들은 Object type 으로 전부 다룰 수 있다.

Inheritance

object 간의 관계를 구축, class 의 재사용성을 높임

References