JavaScript 객체 지향 프로그래밍

class 상속

수업소개

JavaScript에서 클래스를 상속해서 서브 클래스를 만드는 방법을 소개합니다. 

 

 

 

강의

 

 

 

코드

class.js (변경사항

class Person{
    constructor(name, first, second){
        this.name = name;
        this.first = first;
        this.second = second;
    }
    sum(){
        return this.first+this.second;
    }
}
class PersonPlus extends Person{
    avg(){
        return (this.first+this.second)/2;
    }
}

var kim = new PersonPlus('kim', 10, 20);
console.log("kim.sum()", kim.sum());
console.log("kim.avg()", kim.avg());

 

댓글

댓글 본문
  1. 파시
    230619
  2. 소뿡이
    상속을 하는 이유
    1. 같은 코드를 중복해서 사용하지 않기 위해서 상속을 사용한다.
    2. 처음에 만든 클래스를 사용하는 코드가 많을 수도 있고 해당 클래스에 기능을 새로추가하면
    사용하고 있는 코드에서 에러가 날 수 있고, 유지보수하기에 용이 하지 않다.
    그래서 새로운 클래스를 생성해서 기존 클래스를 확장시켜 상속해주는 것이 코드 유지보수에 용이하다.
    3. 추가되는 기능을 기존 클래스를 사용하는 곳에서 모두 사용하는 것이 아니기 때문에
    따로 클래스를 추가하여 상속한 후 추가된 기능을 사용하는 곳에서만 객체를 생성하여 유지보수 편의성을 증진시킨다.
  3. Kyu Youn Lee
    중복제거라는 단어가 많이 와 닿네요.
  4. LLLEE
    1. 상속이란 무엇인가?
    상속이란, 하나의 class(constructor)를 정의하고 그 class에서 기능(property)을 추가하려고 할때,
    또다른(자식) class(constructor)를 만들고 기존(부모) class를 상속시켜 기능(property)를 추가 시킨다.

    2. 상속이 없으면 생기는 비효율은?
    부모 class가 내가 작성하 코드가 아닐 때 혹은 다른 라이브러리를 가져다 썼을 때, 수정이 불가능하거나
    혹여 가능하다고 해도 여러 가지 오류를 범하는 등의 비효율이 생겨날 수 있다.
    또한 같은 코드가 중복적으로 사용되 유지보수에 좋지않고 메모리 효율이 떨어진다.

    3. 상속받는 자식 class 구현
    class-자식-class-이름 constructor extends 부모-class-이름{}
  5. 분위기
    상속이라는 기능이 없이 클래스를 만들면 일단은 코드 중복이 많아진다. 중복된 코드는 서로 같은 내용이지만 연결되어 있지는 않다. 그래서 중복된 부분을 한 곳에서 수정하면 다른 곳은 수정이 안 된다. 생산성이 매우 떨어진다.

    이를 위해서 상속이라는 기능을 사용하면 중복된 코드를 한 곳으로 모을 수 있고 한 번만 쓰면 된다. 그 부분을 수정할 일이 있으면 한 곳만 수정하면 상속받은 모든 클래스까지 동시다발적으로 수정된다. 재사용성이 높아지고 생산적이다.

    상속을 사용하는 방법은
    class '상속 받을 클래스명(자식)' extends '상속하는 클래스명(부모)' 형태로 작성한다.
  6. 개발맨
    완료
  7. mini
    20211203 감사합니다.
  8. 주니준
    상속의 이유?
    1. 다른사람이 작성한 클래스를 사용할 때, 내부를 수정하면 업데이트가 안되는경우가 생길 수있음
    따라서 원본을 건들이지 않고 추가적인 메소드를 생성하기 위해 상속을한다.
    2. 빈도가 적은 함수를 모두 클래스안에 생성하는것은 부담스럽고 비효율적임
    상속의 사용법
    - 새로운 Class를 정의하고 extends "상속할클래스" 를 입력하고 생성한다
    상속의 효과
    1. 부모 클래스에 있는 내용을 적지 않아도 사용이 가능하다!
    2. 그 내부에 원하는 메소드를 새로 생성해준다.
    3. 부모 클래스가 변경되면 자식 클래스도 영향을 받는다.
  9. labis98
    20210904 좋은 강의 감사합니다.
  10. Kenna
    1.상속은 생성된 class의 메소드 등의 기능을 유지하면서 새로운 기능을 추가하려고 할 때, 새로운 클래스를 생성하면서 이전 클래스의 기능을 가져오는 개념이다. 상속이 없으면 class에 메소드를 추가할 때 수정해야하고 과한 코드 중복이 일어난다.
    2. extend로 상속받는 자식 class는 extend 부모클래스이름 이후 추가하고 싶은 메소드를 선언해주면 된다.
  11. 싸알
    어메이징 ㅜㅜ
  12. hyun e
    상속이란 무엇인가?
    -> 상속이란, 하나의 class를 정의하고 그 class에서 기능을 추가하려고 할 때, 부모 class를 상속 받는 또 다른 자식 class를 생성하여 부모의 요소들을 상속 받되, 자식 class에서만 가지는 고유의 기능을 부여할 수 있다.
    상속이 없다면 어떤 비효율이 생기는 가?
    -> 부모 class가 내가 작성한 코드가 아닐 때 혹은 다른 라이브러리를 가져다 썼을 때, 수정이 불가능하거나 혹여 가능하다고 해도 여러 가지 오류를 범하는 등의 비효율이 생겨날 수 있다.
    상속을 받는 자식 class는 어떻게 표현하면 되는가?
    -> class 자식 클래스 이름 extends 부모 클래스 이름{}
  13. 박병진
    1. 상속은 무엇인가?
    class로 만든 하나의 객체 생성자 (부모)에 기능을 추가하려고 할 때 자식 생성자를 만들어 들어올 값을 부모로부터 상속을 받아 사용하는 것이다.

    2.상속이 없으면 무엇이 불편한가?
    다른 사람이 만든 라이브러리를 유지 보수를 위해 수정하려고 할 때 오류가 날 수 있다. 코드를 복제하게 되면 중복이 많아져 유지 보수에 좋지 않고 메모리 효율이 떨어진다.

    3.상속 받은 자식 클래스는 어떻게 구현되는가?
    extends 부모클래스 이름 - 부모로부터 받아와서 확장한다.
    class 자식 클라스 명 extends 부모 클라스명 {
    추가 할 함수명 (){ }
    }
  14. 최동희
    class의 상속이란 건 기존에 존재하는 class를 포함하는 새로운 class를 선언하는 기능이며, 이때 기존 class와는 다른 부분을 더 정의할 수 있다.
  15. 현미쓰
    클래스에 모든 기능을 정의하면, 객체를 생성할 때마다 모든 기능이 호출돼 불필요한 메모리가 낭비되므로, 프로그램의 비효율성이 커진다. 이를 해결하기 위한 방안이 상속. 필요한 기능만 따로 만든 클래스를 정의하고, extends를 활용하면 공통된 부모 객체의 모든 기능을 생성자가 그대로 가져와 사용할 수 있고, 필요한 기능만 추가해 사용할 수 있다.
  16. king
    1. 상속이 뭘까요?
    class로 만든 하나의 객체 생성자(부모)에 기능 등을 추가하려고 할 때, 자식 생성자를 만들어 들어올 값을 부모로 부터 상속받아 사용하는 것입니다.

    2. 상속이 없으면 뭐가 불편한가요?
    다른사란이 만든 라이브러리 등을 유지보수를위해 직접 수정시 오류가 날 수 있습니다. 이를방지하기위해 복제해서 사용하게되면 중복이 많아져 유지보수에 좋지않고 메모리관리시 효율이 떨어집니다.

    3. 상속받는 자식 클래스는 어떻게 구현? (extends 부모클래스명 - 부모로부터 받아와서 확장한다.)
    자식클래스는
    class 자식클래스명 extends 부모클래스명 {
    추가할함수명(){}
    }
  17. Giri
    감사합니다.
  18. Giri
    감사합니다.
  19. bread
    상속은 말 그대로 클래스의 기능을 이어받는 것.(기능을 공유함)
    따라서 상속이 없으면 클래스의 기능을 변경하려면 일일히 클래스 안에 코드를
    변경해야 하는 번거로움이 있는데
    이렇게 하게되면 업데이트가 되거나 할 시에 덮어쓰여질 수 있음.
    또한 코드의 중복이 많아져 코드가 길어진다.
    자식 클래스는 상속해주는 클래스와 중복된 코드는 제거시키고 새로 추가한 코드만 남겨놓음
  20. Young Kwang Cho
    extends 키워드를 이용해서 Person 클래스를 확장한 새로운 클래스(서브 클래스)를 만들 수 있다.
    이 서브 클래스는 당연하게 확장한 클래스(Person)의 constructor, method 등을 포함하는 클래스이다.
  21. 변찬우
    질문1. 기 작성된 코드를 수정하는 등의 유지보수를 하는 과정에서 이전 코드를 직접 수정/삭제하는 경우 다양한 후속 이슈를 발생시킬 수 있다. 이를 방지하기 위해 개별 클래스들을 계속해서 생성하는 경우 동일한 기능을 수행하는 코드들의 중복이 증가하여 코드의 효율성?이 낮아질 수 있다.

    질문2. 상속받을 예정인 클래스에 없는 새로운 변수 또는 함수를 새로운 이름의 클래스에 작성하고 해당 클래스의 이름 뒤에 'extends 상속받을클래스이름'을 추가한다. 그런데 만약? 상속받는 클래스와 동일한 변수 또는 함수가 있으면?? ^^ 아마 뒤 수업에 있지 않을까? 한다..ㅎ
  22. 어쩌다보이
    상속은 새로운 클래스로 메소드를 추가할 때 중복되는 코드를 extends 즉 확장한다는 개념으로 바꿔주네요. 카드겜에서 돈을 걸 때 앞 코드 받고 추가로 딜 하는 느낌..
  23. 0cool
    기존의 클래스를 확장할때 상속을 사용해서 활용하면 편할것 같습니다!
  24. hyuna lee
    클래스간에 extends 라는 키워드로 다른 클래스의 메소드를 상속받고 + 추가된 기능이 가능한 거라고 이해했는데 맞나 모르겠네요.
    Person과 PersonPlus는 거의 비슷한데 avg가 추가된것만 다르니까 반복된는 부분을 PersonPlus가 상속받고 추가되는 부분만 써주면 중복이 안되서 좋겠네요.
    근데... 그냥 강의듣고 대충 알것같다 하고 넘어갔었는데, 선생님이 말로 표현해보라고 해서 표현하려고 하니까 머리속으로 생각을 하게되네요. 생각을 하면서 정리도 되고 복습도 되고..참 좋은 방법인것 같아요.
graphittie 자세히 보기