Encapsulation (캡슐화)
-데이터(속성)와 기능(메서드)을 따로 정의하는 것이 아닌, 하나의 객체 안에 넣어서 묶는 것->느슨한 결합
-은닉(hiding): 구현은 숨기고, 동작은 노출시킴
-느슨한 결합(Loose Coupling)에 유리: 언제든 구현을 수정할 수 있음
Inheritance (상속)
-부모 클래스의 특징을 자식 클래스가 물려받는 것
Abstraction (추상화)
-내부 구현은 아주 복잡한데, 실제로 노출되는 부분은 단순하게 만드는 것
-인터페이스 단순화(전화기, 자동차 등)
Polymorphism (다형성)
-똑같은 메서드라 하더라도, 다른 방식으로 구현될 수 있다
부모: HTMLElement - render() -> "화면에 뿌린다"라는 본질
자식1: TextBox - render() -> 가로로 긴 네모 상자와 커서가 있는 형태
자식2: Select - render() -> 눌렀을 때 선택지가 나오도록 화면에 그림
자식3: CheckBox - render()