: 현실 셰게의 물체나 개념을 소프트 웨어 세계로 옮긴 것.
: 객체를 도출하고 각각의 역할을 명확하게 정의하는 것에 초점을 맞춤.
: 객체의 집합으로 프로그램을 표현하는 프로그래밍 패러다임
const Car = {
name: "Kia", // 상태(데이터)
price: 2000000, // 상태(데이터)
getName(name) {
// 메서드
return this.name;
},
};
console.log(Car.getName()); // Kia
: 프로그래밍의 방식이나 관점을 바탕으로 효율적이고 명확한 코드를 작성하는 방법
// `typescript` 는 타입을 명시해주어야 함.
class User {
private name: string;
private age: number;
}
private
으로 인스턴스 내부에서만 해당 변수에 접근이 가능하도록 제한.class Person {
// constructor = 클래스 생성자
constructor(name, age, language) {
this.name = name;
this.age = age;
this.language = language;
}
getLanguage() {
return this.language;
}
}
class User extends Person {
constructor(name, age, language) {
super(name, age, language); // 상위 클래스 생성자 호출
}
}
const user1 = new User("on", "28", "korean");
console.log(user1.name); // on
console.log(user1.age); // 28
console.log(user1.getLanguage()); // korean
interface Human {
name: string;
setName(name);
getName();
}
// 인터페이스 밖에서 프로퍼티와 메소드 구현 해주어야 함.
class Employee implements Human {
constructor(public name: string) {}
// Human 인터페이스에서 상속받은 메소드
setName(name) {
this.name = name;
}
// Human 인터페이스에서 상속받은 메소드
getName() {
return this.name;
}
}
class Person {
constructor(name) {
this.name = name;
}
buy() {} //부모 클래스에서 정의 한 메소드
}
class Employee extends Person {
// 부모 클래스(Person)에 상속받은 자식 클래스(Employee)의 buy를 다시 정의
buy() {
console.log(`${this.constructor.name} 클래스의 ${this.name}님이 물건을 구매하였습니다.`);
}
}
class User extends Person {
// 부모 클래스(Person)에 상속받은 자식 클래스(User)의 buy를 다시 정의
buy() {
console.log(`${this.constructor.name} 클래스의 ${this.name}님이 물건을 구매하였습니다.`);
}
}
const employee1 = new Employee("최하온");
const employee2 = new Employee("최춘식");
const user1 = new User("최겨울");
const user2 = new User("유미호");
const personsArray = [employee1, employee2, user1, user2];
// personsArray에 저장되어 있는 Employee, User 인스턴스들의 buy 메소드를 호출합니다.
personsArray.forEach((person) => person.buy());
// Employee 클래스의 최하온님이 물건을 구매하였습니다.
// Employee 클래스의 최춘식님이 물건을 구매하였습니다.
// User 클래스의 최겨울님이 물건을 구매하였습니다.
// User 클래스의 유미호님이 물건을 구매하였습니다.
buy()
는 동일하지만 각기 다른 형태로 동작