[Java] 클래스, 인스턴스, 객체 (1)

SeongEon Kim·2022년 4월 18일
0

JAVA

목록 보기
14/52

객체지향 언어인 Java를 공부하는만큼, 클래스, 인스턴스 그리고 객체에 대하여 알아보도록 하자.

  1. 개념 및 정리

    클래스(Class) : 객체를 만들기 위한 설계도.

    인스턴스(Instance) : 객체를 만들기 위한 제품.

    객체(Object) :

    코드를 통해 이해해보자.

public static void main(String[] args) {
	System.out.println(10+20);
    System.out.println(10+20);
    .
    .
    .
}

위와 같은 출력코드가 1000개 있다고 하면, 굉장히 번거롭고 귀찮다.
아래와 같이 표현해보자.

public static void sum(int left, int right) {
	System.out.println(lefit+right);
}

public static void main(String[] args) {
	sum(10,20);
    sum(20,40);
}

위와 같이 효율적으로 정리된 코드를 refactoring이라고 한다.

  1. 객체화

    객체 생성을 하는 예시를 아래 코드를 통해 알아보자.

public static void main(String[] args) {
	Calculator c1 = new Calculator();
    //                  ↑ 객체
    // Calculator라는 객체를 새로 만들어서 c1이라는 변수에 담았음.
    // 그 변수는 Calculator라는 객체를 담을 수 있는 데이터 형식으로 표현되어야 함.
    c1.setOprands(10,20);
    //   ↑ 메소드
    // 10과 20이라는 인자값을 setOprands라는 메소드에 전달.
    c1.sum();
    // c1이라는 객체에 sum이라는 메소드를 호출하면 결과값이 나오고,
    c1.avg();
    // c1이라는 객체에 avg이라는 메소드를 호출하면 결과값이 나온다.
}

위의 c1이라는 변수에 담겨있는 객체의 내용을 인스턴스라고 한다.

위의 코드에서 객체의 생성과 작동원리를 파악하였다.
그렇다면 그 객체의 모습, 즉 어떤 변수를 담고 어떻게 작동할것인지 객체의 내용을 알아야 한다. 즉, 설계도를 알아야 한다. 그 설계도를 아래 코드를 통해 파악해보자.

class Calculator{
	int left, right;
    
    public void setOprands(int left, int right){
    	this.left = left;
        //  ↑여기 this.은 class 초입에서 int로 정의한 변수를 가리킨다.
        // = left; 에서 left는 위의 setOprand( , ) 여기 괄호안의 left를 지칭한다.
        this.right = right;
    }
    public void sum() {
    	System.out.println(this.left+this.right);
        //     sum이라는 메소드의 식은 ↑여기서 정의되어 출력된다.
    }
    public void avg() {
    	System.out.println((this.left+this.right)/2);
        //     avg이라는 메소드의 식은 ↑여기서 정의되어 출력된다.
    }

class Calculator는 new Calculator에 해당하는 클래스이고 그 객체의 내용은 바로 위의 코드 내용이다.
객체는 독립된 프로그램으로 볼 수 있다. 변수와 메소드의 집합으로 이해하자.
또한, setOprands라는 메소드는 바로 위 코드에서 setOprands의 내용과 같다.

이 객체가 어떻게 재활용 가능한지 아래 코드를 확인해보자.

public static void main(String[] args) {
	Calculator c2 = new Calculator();
    //               ↑new Calculator를 통해 인스턴스를 생성했다.
    // 그 인스턴스는 c2라는 변수에 담겼다.
    c2.setOprands(20,40);
    // 이 코드를 통해 left에는 20이, right에는 40이 된다.
    c2.sum();
    // 60을 출력.
    c2.avg();
    // 30을 출력.
}

이제 클래스에 대해서 다음 게시물에서 좀 더 자세히 알아보도록 하자.

profile
꿈을 이루는 사람

0개의 댓글