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

2617 단어 eclipseJavaJava

객체지향 언어인 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이라고 한다.

2. 객체화

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

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을 출력.
}

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

좋은 웹페이지 즐겨찾기