본문 바로가기
javaScript

JS 상속 기능을 사용하는 이유

by mooyou 2024. 1. 3.
728x90
300x250

자바스크립트에서 상속 기능을 사용하는 이유 

 

1. 코드 재사용성(Code Reusability)

상속을 통해 부모 클래스의 속성과 메서드를 자식 클래스에서 재사용할 수 있다.

이것은 코드를 더 간결하게 만들고 중복을 피할 수 있도록 해준다.

// 부모 클래스
function Animal(name) {
  this.name = name;
}

// 공통 메서드 추가
Animal.prototype.eat = function() {
  console.log(this.name + "가 먹고 있습니다.");
};

// 자식 클래스
function Dog(name, breed) {
  Animal.call(this, name); // 부모 클래스의 생성자 호출
  this.breed = breed;
}

Dog.prototype = Object.create(Animal.prototype);

// 자식 클래스에서 부모 클래스의 메서드 재사용
Dog.prototype.bark = function() {
  console.log("멍멍!");
};

var myDog = new Dog("Buddy", "골든 리트리버");

// Animal 클래스의 메서드 호출
myDog.eat();  // "Buddy가 먹고 있습니다."
myDog.bark(); // "멍멍!"

 

2. 유지보수성 향상(Maintenance)

상속을 사용하면 코드의 일부를 변경하거나 업데이트할 때 관련된 모든 클래스를 수정할 필요가 없다.

부모 클래스에서 변경하면 해당 변경 사항이 모든 자식 클래스에서 자동 반영된다.

// 부모 클래스
function Shape(color) {
  this.color = color;
}

// 부모 클래스의 메서드
Shape.prototype.getColor = function() {
  return this.color.toUpperCase();
};

// 자식 클래스
function Circle(radius, color) {
  // 상속 및 부모 클래스 생성자 호출
  Shape.call(this, color);
  this.radius = radius;
}

// Circle이 Shape을 상속하도록 프로토타입 설정
Circle.prototype = Object.create(Shape.prototype);
// Circle의 생성자를 다시 지정
Circle.prototype.constructor = Circle;

// 자식 클래스의 메서드 추가
Circle.prototype.getArea = function() {
  return Math.PI * this.radius * this.radius;
};

// 사용 예제
var myCircle = new Circle(5, "red");

console.log(myCircle.getColor());  // "RED" (부모 클래스의 메서드 사용)
console.log(myCircle.getArea());   // 78.54 (자식 클래스의 메서드 사용)

 

3. 다형성 지원(Polymorphism)

긱가 다른 클래스에서 다르게 동작한다.

// 부모 클래스
function Vehicle() {}

// 부모 클래스의 메서드
Vehicle.prototype.drive = function() {
  console.log("Generic vehicle is driving.");
};

// 자식 클래스 1
function Car() {}
Car.prototype = Object.create(Vehicle.prototype);

// 자식 클래스 1의 메서드 재정의 (다형성)
Car.prototype.drive = function() {
  console.log("Car is driving fast!");
};

// 자식 클래스 2
function Bicycle() {}
Bicycle.prototype = Object.create(Vehicle.prototype);

// 자식 클래스 2의 메서드 재정의 (다형성)
Bicycle.prototype.drive = function() {
  console.log("Bicycle is pedaling.");
};

// 다형성 활용 함수
function goDriving(vehicle) {
  vehicle.drive();
}

// 다형성을 이용한 호출
var myCar = new Car();
var myBicycle = new Bicycle();

goDriving(myCar);      // "Car is driving fast!"
goDriving(myBicycle);  // "Bicycle is pedaling."
728x90
반응형

'javaScript' 카테고리의 다른 글

클래스 상속 기능 사용 - 중복코드 제거 - 비공개  (0) 2024.01.07
layerpopup select - 비공개  (0) 2024.01.05
클래스 상속 프로토 타입 vs Class 문법  (0) 2024.01.01
.call() 메서드  (0) 2023.12.27
Object.create()  (0) 2023.12.25

댓글