이때 상태, 데이터는 속성 / 행위, 절차는 매서드로 말할 수 있다
시간이 지나며 급속도로 발전하는 하드웨어에 발맞추어 소프트웨어도 빠르게 발전시키기 위해 모듈화, 캡슐화해서 개념적으로 접근하는 형태를 갖는 객체지향 프로그래밍이 탄생
🔒 은닉화?
내부 데이터나 내부 구현이 외부로 노출되지 않도록 만들고, 객체에서 속성을 직접 접근하지 못하게 숨기기 때문에 객체가 반드시 정해진 매서드를 통해 상호작용 하도록 함
은닉화는 객체의 응집도를 높혀 모듈화를 이루게 하는데 , 이후 모듈 단위로 재사용이 용이하다 이런 은닉화의 특징을 사용하면 이후 객체 내 메서드의 구현만 변경하여 이 매서드를 사용하는 다른 코드들에서 수정사항을 반영할 수 있다
자식 클래스는 부모 클래스에서 상속받은 속성과 매서드 외에 추가하거나 수정할 수 있다
ex. 그림과 같이 사람 얼굴의 공통적인 특징(눈썹, 눈, 코, 입)을 뽑아내어 그린 추상화 이때 개인의 세부적인 특징은 무시된다
💡 추상화와 은닉화
캡슐화가 코드나 데이터를 은닉하여 접근 권한을 제한시기는 것에 집중한다면, 추상화는 클래스를 사용하는 사람이 불필요하지 않은 메서드 등을 감추어 목표하는 동작을 편하게 수행할 수 있도록 하는 것에 집중함
class firstClass {
add() {
console.log("First Method")
}
}
class secondClass extends firstClass {
add() {
console.log(30 + 40);
}
}
class thirdClass extends secondClass {
add() {
console.log("Last Method")
}
}
var ob = new firstClass();
var ob2 = new secondClass();
var ob3 = new thirdClass();
ob.add(); //"First Method"
ob2.add(); // 30 + 40
ob3.add(); //"Last Method"
firstClass의 add 매서드를 secondClass, thirdClass 에서 상속하고 있다
동일한 메서드 이름과 메서드 정의가 다른 여러 클래스를 만들었는데, 이 예제는 동일한 메서드가 호출되는 개체에 따라 다른 작업에서 수행됨을 볼 수 있다