[Java] 클래스, 인스턴스, 객체 (1)
객체지향 언어인 Java를 공부하는만큼, 클래스, 인스턴스 그리고 객체에 대하여 알아보도록 하자.
-
개념 및 정리
클래스(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을 출력.
}
이제 클래스에 대해서 다음 게시물에서 좀 더 자세히 알아보도록 하자.
Author And Source
이 문제에 관하여([Java] 클래스, 인스턴스, 객체 (1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@enoch0403/Java-클래스-인스턴스-객체저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)