공학/에세이

객체지향: 클래스와 인스턴스

카카루1331 2020. 8. 16. 17:46

객체지향이란 무엇일까?
객체지향을 한마디로 말하긴 어렵다. 남에게 전달하기란 더 어렵다. 
별 수가 없다. 코드를 보면서 익혀나가는 수밖에는.

public class example {
		
	public static void main(String[] args) {
		String name = "Smith";
		int height = 150;
		String Gender = "Male";		

		System.out.println("Hi! My name is " + name);
	}

}


인간을 코드로 표현하려면 어떻게 해야할까?
다 표현할 수는 없다. 추상화는 필수!
추상적으로 표현할래도 인간의 특징은 다양하다.
여러 변수가 필요하다. 이름을 우선 부여해주자.
신장도 필요하고 성별도 필요하다.
추상화 완료? 해피한 것 같다.

그런데 여러 사람을 다뤄야 한다면 어떨까?
선언과 할당에 많은 반복이 필요하다.
게다가 전역 변수가 여러개 생긴다는 문제도 있다.
결국엔 코드가 아니라 빽빽이가 될 것이다.
해피하지 않다.

중복되는 것들을 줄일 수는 없을까?

class Human {
	String name;
	int height;
	int age;
	
	public Human (String name, int height, int age) {
		this.name = name;
		this.height = height;
		this.age = age;
	}
	
	public void Hi() {
		System.out.println("안녕, 내 이름은 " + name + "!");			
	}
	
}

public class example2 {
	
	public static void main(String[] args) {
		Human hu_1 = new Human("짱구", 130, 5);
		hu_1.Hi();
		
		Human hu_2 = new Human("철수", 135, 5);
		hu_2.Hi();
	}

}

 

클래스를 이용해보자.
공통적인 변수가 있지만  값은 사람마다 달라야 한다.
그렇다면 값은 나중에 할당해주자. 언제? 인스턴스를 생성할 때.
이것의 구현은 this로 가능하다.
this를 이용하면 인스턴스 입장에서 변수에 접근할 수 있다.
예컨대 인스턴스 hu_1의 이름은 짱구이고, 인스턴스 hu_2의 이름은 철수다.