1. 클래스 생성자 매써드 - 매개변수

// 매개변수 미리 선언하기
class Car {
    color: string; // 아래의 생성자매서드에 사용된다면, 미리 선언을 해줘야 한다.

    constructor(color: string) {
        this.color = color;
    }
}

// 또는, 생성자 매서드의 매개변수에 'public' 또는 'readonly' 
class Car {
    constructor(public color: string) {  
        this.color = color;
    }
}

const bmw = new Car("red")

 

 

2. 접근 제한자 (Access modifier) : public

// Car클래스
class Car {
    name: string = "car"  // public name: string = "car" 와 동일
    color: string;
    constructor(color: string) {
        this.color = color;
    }
    start() {
        console.log("start")
    }
}

// 자식클래스
class Bmw extends Car {   
    constructor(color: string) {
        super(color);
    }
    showName() {
        console.log(super.name)  // 자식클래스에서 사용가능
    }
}

const z4 = new Bmw("black")  // 클래스 인스턴스 접근 가능

 

 

3. 접근 제한자 (Access modifier) : private

// Car클래스
class Car {
    private name: string = "car"  // #name: string = "car" 와 동일
    color: string;
    constructor(color: string) {
        this.color = color;
    }
    start() {
        console.log("start")
        console.log(this.name)   // Car 클래스에서만 내부에서만 사용가능(자식클래스에서 사용불가)
                                 // console.log(this.#name)로도 표현 가능
    }
}

 

 

4. 접근 제한자 (Access modifier) : protected

class Car {
    protected name: string = "car" 
    color: string;
    constructor(color: string) {
        this.color = color;
    }
    start() {
        console.log("start")
    }
}

// 자식클래스
class Bmw extends Car {   
    constructor(color: string) {
        super(color);
    }
    showName() {
        console.log(super.name)  // 자식클래스에서 사용가능
    }
}

const z4 = new Bmw("black")
console.log(z4.name) // 에러발생: 클래스 인스턴스로 접근 불가

 

 

5. static 정적 멤버 변수

// static 정적 멤버 변수
class Car {
    name: string = "car";
    static wheels = 4;

    start() {
        console.log("start")
        console.log(this.name)
        console.log(Car.wheels)  // static을 사용할때는, this가 아닌 Class명을 적어야한다.
    }
}

console.log(Car.wheels)

 

 

6. 추상 클래스

abstract class Car {
    color: string;
    constructor(color: string) {
        this.color = color
    }
                  
    abstract doSometing():void // 상속받는 곳에서 '구체적인 기능'을 구현해주어야 함
}

// const car = new Car("red")  // 오류 발생: 추상 클래스는 new를 이용해서 객체를 만들 수 없음

class Bmw extends Car {        // 오직 상속을 통해서만 객체를 만들 수 있음
    constructor(color: string) { 
        super(color);
    }

    doSomething(){             // 상속받는 곳에서 '구체적인 기능'을 구현해줌
        alert(3)
    }
}

const z4 = new Bmw("black")

 

+ Recent posts