Java

객체지향 프로그래밍 - 5. 클래스 / 객체 / 인스턴스 차이

BINTHEWORLD 2022. 5. 20. 12:46

클래스

클래스를 이용하여 현실세계의 특정한 물건을 지칭할 수 있다.

대표적으로 많이 사용되는 것이 Node 클래스이다.

종종 Student 클래스와 같이 하나의 처리할 데이터 단위를 명시하는데 사용된다.

객체 

실세계의 사물

Ex.Car

인스턴스

실세계의 사물이 프로그램에 녹아들어가 메모리에 할당됨 -> 객체지향의 의미

Ex. new Car()

 

클래스의 타입으로 선언되었을 때 객체라고 부르고, 그 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부른다.

Car car; // 객체

Car car = new Car(); // 인스턴스화


두 좌표의 x좌표와 y좌표를 비교하여 정중앙 좌표를 구해보자.

Node.java

// Node 클래스 : 메인메소드는 하나만 있으면 되므로 제외
public class Node {
	// 좌표
	private int x;
	private int y;
	
	public int getX() {
		return x;
	}
	
	public void setX(int x) {
		this.x = x;
	}
	
	public int getY() {
		return y;
	}
	
	public void setY(int y) {
		this.y = y;
	}
	
	// 생성자 : 인스턴스(객체)를 만들어줄 때 자동으로 값을 넣어주는(초기화해주는) 것
	public Node(int x, int y) {
		// Node가 가지고있는 고유한 속성으로 초기화
		this.x = x;
		this.y = y;
	}
	
	// 다른 노드의 x좌표, y좌표와 자신의 x좌표, y좌표 비교해서 정중앙값을 가지는 Node 형태로 반환
	public Node getCenter(Node other) { 
		return new Node((this.x + other.getX()) / 2, (this.y + other.getY()) / 2);
	}
}

Main.java

// 클래스
public class Main {
	public static void main(String[] args) {
		// 매개변수 2개 받는 생성자 활용
		Node one = new Node(10, 20); 
		Node two = new Node(30, 40);
		
		// result : 정중앙점
		Node result = one.getCenter(two); // one 인스턴스에서 메소드 실행
		System.out.println("x : " + result.getX() + ", y : " + result.getY());
	}
}

결과값


출처

- https://www.youtube.com/c/dongbinna

- [Java] 클래스, 객체, 인스턴스의 차이 https://gmlwjd9405.github.io/2018/09/17/class-object-instance.html