자바와 자바스크립트 class 만들어보기

서재환·2021년 11월 13일
0

JavaScript

목록 보기
5/25
자바로 작성한 class Person이다.
class Person {
    private String name;
    private int age;
    
    void setName(String name) {
        this.name = name;
    }
    void setAge(int age) {
        this.age = age;
    }
    String getName() {
        return this.name;
    }
    int getAge() {
        return this.age;
    }
}

public class Main {
    public static void main(String[] args) {
        Person p1 = new Person();
        p1.setName("sjh");
        p1.setAge(112);
        System.out.println(p1.getName());
        System.out.println(p1.getAge());
    }    
}
자바스크립트로 작성한 class Perosn 이다. 여기서 자바스크립트에 getter setter를 설정
해주었다. 자바스크립트로 getter와 setter를 설정할 때에는 주의해야한다. 

예를 들어 변수 age 부문과 관련해서 getter와 setter를 만들었다고 하자. 그러면 this.age
= age; 라는 생성자 코드블록 안에 있는 코드의 this.age는 getter를 호출하고 age는 setter
를 호출한다.

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  
  /* 
  getter를 정의하는 순간 this.age=age 에서 this.age는 메모리에 올라가있는 데이터를
  읽어오는것이 아니라 get age를 호출한다.
  */
  
  get age() {
    return this._name;
  }
  
  /* 
  setter를 정의하는 순간. this.age=age 에서 age는 setter를 호출하게 된다.
  this.age = value로 set 함수를 만들 경우 다시 자기 자신을 호출하기 때문에
  this._age = value와 같은 특별 변수로 작성해주어야한다.
  */
  
  set age(value) {
    this._age = value < 0 ? 0 : value;
  }
  
  speak() {
    console.log(`${this.name}: hello`);
  }
}

const p1 = new Person('sjh', 112);
console.log(p1.name, p1.age);          //sjh 112
p1.speak();                            //sjh: hello

0개의 댓글