다형성
계승
객체 지향 프로그래밍(OOP)의 다형성은 프로그램이 인터페이스에서 메서드를 상속하는 요소와 상호 작용할 수 있는 다양한 유형의 요소에 인터페이스를 제공하는 개념입니다. 이 아이디어는 유기체 또는 종이 여러 다른 형태 또는 단계를 가질 수 있다는 원리를 나타내는 생물학적 용어 다형성에서 가져왔습니다. 컴퓨터 과학의 개념은 기능이 상속을 통해 프로토타입 또는 추상 클래스/인터페이스를 확장하는 클래스로 전달되는 것을 허용합니다.
여기에서 동물 클래스를 만들고 있습니다.
class Animal{
constructor(name){
this.name = name;
}
speak(){
console.log('I am an animal');
}
eat(){
console.log('Yum!');
}
}
이 Animal 클래스 내부에서 매개변수를 사용하지 않고 콘솔에 텍스트 문자열을 출력하는 speak() 메서드를 선언했습니다. Javascript ES6에서 우리는 쉽게 상속을 가능하게 하고 코드를 정리할 수 있는 일부 코드를 컴파일 타임 뒤에 삽입하는 class 키워드를 사용합니다. 다음으로 Animal 클래스에서 상속할 다른 클래스를 정의할 것입니다.
class Dog extends Animal{
constructor(name){
super(name);
}
speak(){
console.log("Bark!");
}
}
이제 Animal 클래스를 확장하는 Dog 클래스를 만들었습니다. 이것은 Dog가 선언된 슈퍼클래스 내에서 정의된 기능을 상속한다는 것을 의미합니다. Dog 클래스에 적합하도록 speak() 메서드를 재정의했습니다. 컴퓨터 과학에서는 이를 "메서드 재정의"라고 합니다. Animal 클래스 내에서 우리는 후속적으로 Dog 클래스에 상속된 기능(메서드 speak())을 정의했으며 모든 Dog가 적어도 Animal 수퍼 클래스에 정의된 기본 동작을 갖도록 합니다. 본질적으로 Animal 클래스를 하위 클래스에서 예상되는 동작을 생성하는 데 사용할 수 있는 클래식 인터페이스로 사용하고 있습니다. 하위 클래스 예제를 다시 살펴보겠습니다.
class Cat extends Animal{
constructor(name){
super(name);
}
speak(){
console.log("meow...");
}
}
이전의 Dog 클래스와 마찬가지로 Cat은 Animal에서 미리 결정된 기능을 상속합니다. Animal에 정의된 동일한 메서드가 하위 클래스로 변환되었습니다. 다시 한번, speak() 클래스는 우리의 새 고양이에 적합한 정의로 재정의되었습니다.
이제 원래 Animal 클래스에서 정의한 방식으로 새 클래스와 인터페이스할 수 있으며 상속된 메서드를 통해 기본 동작을 보장하거나 메서드 재정의를 통해 사용자 지정 작업을 보장할 수 있습니다.
let dog = new Dog('Dan');
let kitty = new Cat('Kevin');
dog.speak(); //prints "Bark!"
kitty.speak(); //prints "meow..."
결론
다형성의 개념이 슈퍼클래스를 확장하는 서브클래스에 상속된 동작을 보장할 수 있지만 메서드 재정의를 통해 슈퍼클래스가 미리 결정된 메서드 선언을 통해 작업을 이끌어내는 데 사용할 수 있는 효과적인 인터페이스가 되도록 해당 동작을 사용자 지정할 수 있습니다. 시간을 내어 이 글을 읽어주셔서 감사드리며 유용한 정보를 얻으셨기를 바랍니다. 좋은 하루 되세요.
Reference
이 문제에 관하여(다형성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/tsuarez/polymorphism-26no
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class Animal{
constructor(name){
this.name = name;
}
speak(){
console.log('I am an animal');
}
eat(){
console.log('Yum!');
}
}
class Dog extends Animal{
constructor(name){
super(name);
}
speak(){
console.log("Bark!");
}
}
class Cat extends Animal{
constructor(name){
super(name);
}
speak(){
console.log("meow...");
}
}
let dog = new Dog('Dan');
let kitty = new Cat('Kevin');
dog.speak(); //prints "Bark!"
kitty.speak(); //prints "meow..."
Reference
이 문제에 관하여(다형성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tsuarez/polymorphism-26no텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)