본문 바로가기
JAVA/기본

#2 클래스, 인스턴스

by 히포파타마스 2021. 4. 21.

클래스

 

1. 클래스의 정의

클래스란 객체를 정의해 놓은 것을 의미한다.

 

 

2. 클래스의 용도

클래스는 객체를 생성하는데 사용된다.

 

 

3. 클래스 생성

 

[클래스 생성 예]

class 클래스명 {
    멤버변수
    ..
    ..
    
    메소드
    ..
}

class 뒤에 클래스명을 적은 후, 괄호안에 멤버변수와 메소드를 이용해 객체를 구현하면 된다.

 

 

 

인스턴스

 

1. 인스턴스의 정의

클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화 라고 하며, 특정 클래스로부터 만들어진 객체를 그 클래스의 인스턴스 라고 한다.

 

[인스턴스화]


클래스 ⟶ 인스턴스(객체)

 

즉, 인스턴스는 객체와 동의어이며 상황에 따라 명칭이 바뀔 뿐이다.

 

 

2. 객체의 구성요소

객체는 다수의 속성과 기능으로 이루어져있다. 

 

예를들면 아래와 같은 속성과 기능으로 이루어진 [문자열]이라는 객체가 존재 할 수 있다.

 

속성  길이, 크기 등
기능  정렬, 복사, 비교, 검색 등

 

※ 프로그래밍에서는 속성은 멤버변수(member variable)로, 기능은 메서드(method)로 불린다.

 

 

3. 인스턴스 생성

인스턴트는 new 연산자를 이용해 생성할 수 있으며, 생성된 인스턴트의 주소를 동일한 클래스 타입의 참조변수에 넣는 것으로 인스턴스를 사용할 수 있다. 

 

 

[인스턴스 생성 그 #1]

클래스 변수명;
변수명 = new 클래스();

        혹은
        
클래스 변수명 = new 클래스();

 

 

[인스턴스 생성 그 #2]

String str;
str = new String();

혹은

String str = new String();

String이라는 클래스의 인스턴스를 생성해서 그 주소값을 String 타입의 참조변수 str에 넣는다.

 

인스턴스가 생성되면 빈 메모리공간에 클래스에 정의된 멤버변수와 메서드가 생성된다. 이때 멤버변수는 각 타입의 기본값으로 초기화 된다.

 

 

4. 인스턴스의 멤버변수와 메소드 접근

 

[멤버 접근]

참조변수.멤버변수;

참조변수.메소드;

인스턴스의 주소값이 담겨있는 참조변수를 통해 인스턴스의 멤버변수와 메소드에 접근 할 수 있다.

 

인스턴스는 모두 동일한 클래스로 생성되기 때문에 생성된 각각의 인스턴스는 모두 동일한 메소드를 가지고있다.

 

하지만 생성된 각각의 인스턴스는 독립적이기 때문에 인스턴스의 멤버변수는 서로 다른 값을 유지 할 수 있다.

 

[Test 클래스 생성]

class Test{
    int num;

    int plus_one(int n) {
        num = n + 1;
        return num;
    }
}

Test라는 클래스를 만든후 멤버변수로 정수타입의 num이라는 멤버 변수를 선언했다.

 

또한 정수 n + 1 값을 멤버 변수인 num에 넣고 반환하는 plus_one이라는 메소드를 정의 하였다.

 

 

[Test 클래스의 인스턴스 멤버변수와 메소드 사용]

public class Main {
    public static void main(String[] args) {
        Test first = new Test();
        Test sec = new Test();

        first.plus_one(5);
        sec.plus_one(3);
        System.out.println(first.num);
        System.out.println(sec.num);

     }
}

class Test{
    int num;

    int plus_one(int n) {
        num = n + 1;
        return num;
    }
}

앞의 Test 클래스로 first와 sec라는 인스턴스를 생성하였다.

 

first와 sec는 같은 Test 클래스로 생성되었기 때문에 모두 plus_one이라는 메소드를 갖고있다.

 

때문에 각 인스턴스에 plus_one 메소드를 호출하여 5와 3의 값을 넣어주었고 first와 sec의 num값을 출력해보았다.

 

각 인스턴스(first, sec)의 num값을 출력한결과는 아래와 같다.

 

 

[first와 sec의 멤버변수 num 변경 결과]

6
4

생성된 인스턴스는 독립적이기 때문에 각각의 멤버변수는 서로 독립된 값을 갖는것을 확인 할 수 있다.

'JAVA > 기본' 카테고리의 다른 글

예외 처리(exception handling)  (0) 2021.08.02
#5 생성자(Constructor)  (0) 2021.04.28
#4 오버로딩(overloading)  (0) 2021.04.28
#3 변수, 메서드  (0) 2021.04.23
#1 객체 지향 프로그래밍  (0) 2021.04.21

댓글