Home [JS] 상속과 변수
Post
Cancel

[JS] 상속과 변수

상속과 변수(멤버, 메서드)

변수의 상속

  • 자식클래스는 부모 클래스 변수를 물려받아 사용할 수 있음
  • private로 정의된 변수는 상속되긴 하지만 접근할 수 있는 권한이 없다.
1
2
3
4
5
6
7
8
9
10
11
12
13
class Employee {
  public name: string;
  employeeNo: number;
  private salary: number; // private 선언 변수는 선언된 클래스 내부에서만 사용
  protected deptNo: number;
}

class Manager extends Employee {
  // Employee 클래스의 모든 변수들은 상속됨.
  jobOfManage: string;
  boss: string;
  employeeNo: number; // 부모 클래스에도 동일한 프로퍼티가 있으나, 상속되지 않고 자식클래스에 있는 값을 사용
}
  • 부모 클래스의 멤버 변수는 자동으로 자식 클래스에 상속되어 들어감
  • 부모 클래스가 가진 변수와 같은 이름의 변수를 선언하면, 부모클래스의 변수는 상속되지 않음 -> 자식 클래스에서 정의한 변수가 사용됨
  • 동일한 이름으로 자식 클래스에 정의된 변수는 상속에서 제외

super 예약어

this 에약어

  • 생성된 객체 자신에 대한 참조를 의미
  • 멤버 변수와 메서드 매개변수의 이름이 같을 경우, 두 변수를 구분하기 위해 사용

sueper 예약어

  • 부모 객체에 접근할 수 있는 참조변수로 사용
1
2
3
4
5
6
7
8
9
10
11
// WMS ProductMaster  클래스정의

// constructor 의 경우, 서버로 전송할 때 undefined 이거나 null 인 값은 제거하기 위해 설정한다. 이 과정에서, 부모클래스에 있는 변수들도 상속받는데, 같은 변수명이 있기 때문에 super 예약어를 사용하였다.
constructor(partial:  Partial<WmsProductMaster> = {}) {
super();
const  keys  =  Object.keys(partial);
for (const  k  of keys) {
if (!(partial[k] ===  null  || partial[k] ===  undefined)) this[k] = partial[k];
}
}

상속과 메서드

메서드의 상속

  • 부모 클래스가 가지고 있는 메서드가 자식 클래스로 상속되어 자식클래스에서 사용가능
1
2
3
4
5
6
7
8
9
10
11
12
class Camera {
	name: string;
	sheets: number;

	public takePicture() :void {
		console.log(name + sheets);
		}
	}

class PolaroidCamera extends Camera {
	batteryGage:
	}

메서드의 Overriding

  • 부모클래스의 메서드를 재사용하지 않고 새롭게 정의하여 사용
  • 부모가 가진 메서드는 상속되지 않음
    • 메서드 Overriding : 메서드 재정의
    • 메서드 Overloading : 하나의 클래스에서 동일한 이름의 메서드를 여러 개 정의
  • 자식 클래스에서 재정의된 메서드는 부모 클래스의 메서드와 메서드 이름, 매개변수의 유형과 개수가 동일해야 함
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Camera {
  name: string;
  sheets: number;

  public takePicture(): void {
    console.log(name + sheets);
  }
}

class PolaroidCamera extends Camera {
  batteryGage: number;
  public takePicture(): void {
    console.log(name + sheets);
    console.log(sheets);
    console.log(name);
  }
}

메서드의 Overloading

  • 하나의 클래스에 동일한 이름의 메서드가 여러개 중복 정의되어 있는 것
  • 메서드 매개변수의 개수나 타입이 달라야 함.

super 예약어가 사용된 메서드 Overriding

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Camera {
  name: string;
  sheets: number;

  public takePicture(): void {
    console.log(name + sheets);
  }
}

class PolaroidCamera extends Camera {
  batteryGage: number;
  public takePicture(): void {
    super.takePicture(); // 부모 클래스의 메서드를 super 예약어를 통해 호출
    console.log(sheets);
    console.log(name);
  }
}

참조

https://data-make.tistory.com/210

This post is licensed under CC BY 4.0 by the author.

[JS] FormData 정리

[JS] TryCatch 문