클래스: 접근제한자,정적멤버,추상

김수민·2023년 2월 17일
0

TypeScript

목록 보기
4/8

접근 제한자

public

어디에서나 자유롭게 접근 가능
클래스 내부에서 접근, 인스턴스 접근 가능 ⭕

생략가능한 접근 제한자이다.
범위: 속성, 메소드

public name: string;

protected

내 클래스 내부, 자식 클래스 내부에서 접근 가능⭕
인스턴스 접근 불가능❌

범위: 속성, 메소드


private

내 클래스 내부 접근 가능 ⭕
자식 클래스 내부, 인스턴스 접근 불가능 ❌

범위:


정적 멤버

인스턴스 멤버에 static을 붙인 필드 및 메소드는 정적 필드, 정적 메소드가 된다.

class ClassAnimal {
	// 정적 멤버 변수 선언
	// this나 instance로 접근할 수 없다.
	// class명.변수명
	static eye=2;
  
  	name: string;
	constructor(name:string) {
		this.name= name;
	}
}

let cat= new ClassCat("reo");

로 선언했다면

cat.eye ❌         // 객체로는 접근할 수 없다.
ClassAnimal.eye ⭕ // class에 접근해야한다.

추상

abstract를 붙인 클래스 및 메소드는 추상 클래스, 추상 메소드가 된다.

1️⃣ abstract를 붙인 클래스 생성
abstract class 클래스명{
	name:string;
	constructor(name:string){
		this.name=name;
	}
	abstract 메소드명():void
}

2️⃣ 1을 상속받는 클래스 생성
class Teacher extends Person{
	work(): void {
		console.log(`직업은 ${this.name}입니다.`);
	}
}

추상 클래스를 상속 받으면 그 클래스의 추상 메소드를 반드시 작성해주어야한다.

추상 클래스

상속만 가능하고 인스턴스(객체)를 생성할 수 없다.

추상 메소드

메소드의 이름만 선언하고 구체적인 기능은 상속받는 쪽에서 구현한다.
상속받는 클래스는 모두 다 같은 이름의 메소드를 가지며
구현은 각각 다르게 할 수 있다.

profile
sumin0gig

0개의 댓글