사용자 정의 클래스 만들기
업데이트: 2007년 11월
class 문을 사용하여 클래스를 정의합니다. 기본적으로 클래스 멤버는 공개적으로 액세스할 수 있으므로 클래스에 액세스할 수 있는 코드라면 클래스 멤버에도 액세스할 수 있습니다. 자세한 내용은 JScript 한정자를 참조하십시오.
필드가 포함된 클래스
필드는 개체에서 사용하는 데이터를 정의하며, 프로토타입 기반 개체의 속성과 비슷합니다. 다음 예제는 두 개의 필드가 포함된 간단한 클래스입니다. new 연산자를 사용하여 클래스의 인스턴스를 만듭니다.
class myClass {
const answer : int = 42; // Constant field.
var distance : double; // Variable field.
}
var c : myClass = new myClass;
c.distance = 5.2;
print("The answer is " + c.answer);
print("The distance is " + c.distance);
이 프로그램은 다음과 같이 출력됩니다.
The answer is 42
The distance is 5.2
메서드가 포함된 클래스
또한 클래스는 메서드를 포함할 수 있습니다. 메서드는 클래스에 포함된 함수로서 개체의 데이터를 조작하는 기능을 정의합니다. 앞에서 정의한 클래스 myClass는 메서드를 포함하도록 다시 정의할 수 있습니다.
class myClass {
const answer : int = 42; // Constant field.
var distance : double; // Variable field.
function sayHello() :String { // Method.
return "Hello";
}
}
var c : myClass = new myClass;
c.distance = 5.2;
print(c.sayHello() + ", the answer is " + c.answer);
이 프로그램은 다음과 같이 출력됩니다.
Hello, the answer is 42
생성자가 포함된 클래스
클래스를 위한 생성자를 정의할 수 있습니다. 생성자는 클래스와 같은 이름의 메서드로서 new 연산자를 사용하여 클래스를 만들 때 실행됩니다. 생성자에 대해서는 반환 형식을 지정하지 않을 수도 있습니다. 다음 예제에서는 myClass 클래스에 생성자가 추가됩니다.
class myClass {
const answer : int = 42; // Constant field.
var distance : double; // Variable field.
function sayHello() :String { // Method.
return "Hello";
}
// This is the constructor.
function myClass(distance : double) {
this.distance = distance;
}
}
var c : myClass = new myClass(8.5);
print("The distance is " + c.distance);
이 프로그램은 다음과 같이 출력됩니다.
The distance is 8.5