자바(Java)/JAVA 2SE

클래스(Class)란?

본클라쓰 2010. 11. 29. 15:55

 클래스란 동일한 속성과 메소드를 가진 객체를 생성하기 위한 형판(Template)을 뜻한다. 즉 객체를 메모리상에 올려 놓고 데이터를 처리하기 위해서 미리 작성된 객체의 정의를 말한다. 메모리상에 올라가기 전에 텍스트 형태의 프로그램 코드를 클래스라고 부르며 메모리상에 올라와 사용되는 것을 객체(인스턴스)라고 부른다.

 

 객체와 클래스는 다른 개념이다. 클래스는 그냥 프로그램 코드일 뿐이고 객체는 실제 메모리에 올라와서 사용되는 것을 말한다. 즉 미리 정의해 놓은 클래스를 실제 메모리에 올려 처리하는 인스턴스(Instance)를 객체라고 한다. 클래스가 데이터의 구조와 처리 과정을 미리 정의해 놓은 것이라면 객체는 실제 데이터를 가지고 처리하는 프로그램 상의 실체를 말한다. 이렇게 메모리에 올릴 프로그램 코드를 클래스라고 부른다.

 

 

클래스 코드의 예)

class dog {

 

    private String name;

 

    public getName() {

        return name;

    }

 

    public setName(String name) {

        this.name = name;

    }

 

 

 

 클래스에서 데이터를 정의한 것을 속성(Attribute) 또는 멤버변수라고 부르고 데이터를 처리하는 함수를 메소드(Method)라고 부른다. 클래스는 정의했다고 바로 사용할 수 없고, 클래스를 사용하기 위해서는 반드시 메모리에 생성해 주어야 한다. 이것은 클래스 자체는 단지 정의만 되어 있는 것이 때문에 사용을 위해 메모리에 올려놓아야 하기 때문이다. 이렇게 메모리 상에 생성된 클래스를 객체 혹은 인스턴스(Instance)라고 부른다.

 

 자바에서 메모리상에 인스턴스를 생성하기 위해서는 'new' 연산자를 사용하여 명시적으로 생성해 주어야 한다. 그리고 이렇게 생성된 인스턴스를 가리키는 변수가 필요한데 그것이 레퍼런스 변수(Reference Variable)이다.

 

클래스명 레퍼런스변수명 = new 클래스명();

 

객체 생성 예)

Dog dog = new Dog();

 

 레퍼런스 변수란 자바의 특징으로 C에서는 포인터를 사용하여 데이터가 위치한 메모리의 실제 주소를 가지고 메모리 차원에서 직접 접근이 가능하다. 따라서 메모리상의 주소에 직접 값을 쓸 수 있다. 이에 비해 자바의 레퍼런스는 객체를 가리킬 수만 있을 뿐 객체의 메모리 위치에 직접 값을 쓸 수 없다. 레퍼런스 변수를 통한 객체의 멤버 변수와 메소드에 접근만이 가능하다.