- 접근제한자 사용
// 접근 제한자 (Acces modifier) - public , protected , private
// 아무것도 정의하지 않고 사용하면 public 이 할당된다.
// public - 모든 접근을 허용. 자식 class , class 인스턴스 모두 접근가능
// protected - 같은 객체와 상속관계의 객체들만 허용 . 자식 클레스에서 접근 가능
// private - 현재 객체 내에서만 허용 . 해당 클레스 내부에서만 접근 가능
class Car {
// private 를 # 으로 사용할 수 있다 _ 현재 객체 내에서만 허용
// #name: string = "car";
name: string = "car";
// color: string; => public 추가로 사용하지 않아도 됨.
constructor (public color : string){
this.color = color;
}
start(){
console.log("start");
console.log(this.name)
}
}
class Bmw extends Car {
constructor(color: string){
// super 키워드는 부모 오브젝트의 함수를 호출할 때 사용됩니다.
super(color);
}
showName(){
console.log(super.name);
}
}
const bmw = new Car ("red"); // 인스턴스
const z4 = new Bmw ("black") // 인스턴스
console.log(z4.name);
- Class 에서 readonly 추가, 수정 방법
class Car {
// readonly 추가. z4.name 을 수정할 수 없게 된다.
// 수정하려면 constructor 에서 작업을 해주어야 한다.
readonly name: string = "car";
constructor (public color : string, name:string){
this.color = color;
this.name = name; // 여기서 this를 붙여주지 않으면 수정된 new name 값이 뜨지 않는다.
}
start(){
console.log("start");
}
}
class Bmw extends Car {
constructor(color: string, name:string){
// super 키워드는 부모 오브젝트의 함수를 호출할 때 사용됩니다.
super(color,name);
}
showName(){
console.log(super.name);
};
}
// const bmw = new Car ("red");
const z4 = new Bmw ("black" , "new name")
console.log(z4.name);
- 정적 멤버 변수 (Static member variable) _ study note Class 참고
class Car {
readonly name: string = "car";
// 정적 멤버 변수 (static member variable)
static wheels = 4;
constructor (public color : string, name:string){
color = color;
this.name = name;
}
start(){
console.log("start");
// static 으로 선언한 맴버변수는 this 가 아닌 class 명을 적어준다.
console.log(Car.wheels);
}
}
class Bmw extends Car {
constructor(color: string , name:string){
super(color,name);
}
showName(){
console.log(super.name);
}
}
const z4 = new Bmw ("black", "new name")
console.log(z4.name);
console.log(Car.wheels)
- 추상 Class _ abstract
추상화는 property 나 method 에 이름만 선언해주고 구체적인 기능은 상속받는 쪽에서 구현해주는것을 의미한다.
abstract class Car {
constructor (public color : string){
color = color;
}
start(){
console.log("start");
}
// 아무작업도 하지 않는 함수를 생성하고 abstract 를 붙여주면 아래에서 에러가 발생한다.
// 추상 메소드는 반드시 상속받은 쪽에서 고쳐주어야 한다.
abstract doSomting():void;
}
// 추상 클레스는 이렇게 new 를 이용해서 객체를 만들수 없다.
// const car = new Car("red")
// 오직 이렇게 상속을 통해서만 사용이 가능하다.
class Bmw extends Car {
constructor(color: string){
super(color);
}
doSomting(){
console.log("fixed");
alert(3);
}
}
const z4 = new Bmw ("black")
'Programming Language > TypeScript' 카테고리의 다른 글
[ TypeScript ] Interface 예제 (0) | 2024.02.14 |
---|---|
[ TypeScript ] 리터럴(Literal), 유니온/교차 Type (0) | 2024.02.14 |
[ TypeScript ] Type 과 Interface 의 차이점 (0) | 2024.02.14 |
[TypeScript] JavaScript 와 TypeScript 의 차이점 (0) | 2024.02.14 |