클래스와 객체를 많은 비유로 강의해주시지만,, 가장 아하?했던 비유라면
클래스(빈 깡통? 틀 느낌) -> new로 객체 생성하여 실물을 만들어 내는 것
사실 나는 그냥 클래스 설계 후, 객체 생성 코드를 100번쯤 작성해보니 이해가 되었다
그냥 왜왜왜? 하면서 파고들지 말고 근데 일단은 모르겠으면 가벼운 마음으로 예제코드를 작성해보자! 반복이 곧 이해가 될 것이다
꼭 기억할 사항은 클래스를 만들고 new로 그 클래스를 객체화(빈 깡통을 사용할 수 있게하고)하고 그 클래스의 기능(메서드, 연산이나 출력 등등)을 c1(참조변수)으로 접근해서 사용한다!
class Calculator{
// class라는 키워드의 의미 : 컴퓨터에게 지금부터 calculator라는 객체의 설계도를 알려줄게!라는 뜻
// 아래 로직들이 그 설계도 내용
int left, right; // 변수 선언
public void setOprands(int left, int right){
//아래 Main 메서드에 있던 그 메서드와 동일한 메서드
this.left = left; // left, this.left == 10
this.right = right; // right, this.right == 20
//this.left와 left의 차이는 무엇인가?
//this는 우리가 생성한 참조변수 c1이 가르키는(담겨있는) c1인스턴스
}
public void sum(){
System.out.println(this.left+this.right);
}
public void avg(){
System.out.println((this.left+this.right)/2);
}
}
public class CalculatorDemo {
public static void main(String[] args){
Calculator c1 = new Calculator();
c1.setOprands(10,20);
// c1(참조변수, 객체를 다룰 수 있는 리모컨)으로 c1이 가르키고 있는 객체에 접근할 수 있고
// setOprands메서드의 매개변수에 각각 int left, int righ에 10, 20 대입할 수 있게 된다.
c1.sum();
c1.avg();
Calculator c2 = new Calculator();
c1.setOprands(20,40);
c1.sum();
c1.avg();
}
}
객체를 볼 때 프로그램 안의 독립된 하나의 프로그램으로 보자!
하나의 프로그램 안에 변수 + 메서드가 있듯이 객체도 변수와 메서드의 집합이다!
굳이 구분할 필요는 없다고 생각되지만 구분을 하자면 아래와 같다.
객체 : 보통 모든 인스턴스를 대표하는 용어
인스턴스 : 특정 클래스로부터 만들어진 객체
Ex) Calculator 클래스로 만들어진 객체를 Calculator인스턴스라고 한다.