클래스의 기본기능
- 객체지향 패러다임은 객체를 우선적으로 생각해서 프로그램을 만든다는 방법론
- 추상화 : 프로그램에서 필요한 요소만 사용해 객체를 표현하는 것
- 클래스는 객체를 안전하고 효율적으로 만들 수 있게 해주는 문법
- 인스턴스는 클래스를 기반으로 생성한 객체
- 생성자는 클래스를 기반으로 인스턴스를 생성할 때 처음 호출되는 메소드
상속
- 상속은 클래스의 선언 코드를 중복해서 작성하지 않게해 코드의 생산 효율을 올리는 문법
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()}` )
댓글남기기