[JavaScript] 클래스

클래스의 기본기능

  • 객체지향 패러다임은 객체를 우선적으로 생각해서 프로그램을 만든다는 방법론
  • 추상화 : 프로그램에서 필요한 요소만 사용해 객체를 표현하는 것
  • 클래스는 객체를 안전하고 효율적으로 만들 수 있게 해주는 문법
  • 인스턴스는 클래스를 기반으로 생성한 객체
  • 생성자는 클래스를 기반으로 인스턴스를 생성할 때 처음 호출되는 메소드

상속

  • 상속은 클래스의 선언 코드를 중복해서 작성하지 않게해 코드의 생산 효율을 올리는 문법
class 클래스이름 extends 부모클래스이름 {
}
class Rectangle{
  constructor (width, height){
    this.width = width
    this.height = height
  }
  getPerimeter(){
    return 2*(this.width + width.height)
  }
  getArea(){
    return this.width * this.height
  }
  class Square extends Rectangle{    //Squre클래스가 가지는 부모클래스
    constructor(length){                     //부모의 생성자 함수를 호출하는 코드
      super(length,length)
    }
  }
}
  • private 속성과 메소드
    • 클래스 사용자가 클래스 속성(또는 메소드)을 의도하지 않은 방향으로 사용하는 것을 막아 클래스의 안정성을 확보
    • squre객체 생성 시 매개변수로 음수를 전달(나올 수 없는 값)
    • 조건문을 활용해 0 이하에 예외를 발생시켜 사용자에게 불가함을 인지시킴
    • square.length = -10처럼 사용자가 직접 속성을 변경하는 것은 막을 수 없음
class Square{
  #length                   //해당 속성을 private속성으로 사용하겠다고 미리 선언

    constructor(length){
      if(length <= 0){
        throw '길이는 0보다 커야합니다.'
      }
      this.#length = length
    }
    getPerimeter(){return 4*this.#length}
    getArea(){return this.#length*this.#length}
  }
...
const squre = new Square(10)
console.log(`정사각형의 둘레 : ${squre.getPerimeter()}` )
console.log(`정사각형의 넓이 : ${squre.getArea()}` )

댓글남기기