코드에 대해 해석하기

인철·2023년 10월 13일
0

algorithm

목록 보기
28/91

코드를 해석하세요

class Main {
	public static void main(String[] args) {
		// 오직 main 함수 안에서만 활동하는 지역변수를 만들겠습니다.
		// main 함수에서는 더 이상 a라는 이름의 다른 변수를 만들 수가 없다.
		// main 함수가 시작되면 a변수는 만들어진다.
		// main 함수가 끝나면 a변수는 사라진다.
		// a에는 단 한순간 이라도 정수 이외의 값을 가질 수 없다.
		// 그래서 현재 a에는 0(쓰레기 값)이 들어가 있다.
		// a에는 오직 -21억 이상, 21억 이하의 정수만 들어갈 수 있다.
		// a에 정수가 아닌 값을 넣으려고 시도하면 자동으로 정수화 되어서 들어간다.
		// 만약에 위 정수화가 위험할 수 있는 가능성이 조금이라도 있다면 오류가 발생한다.
		int a;
	}
}
=====================================================================
class Main {
	public static void main(String[] args) {
		// 무기 리모콘을 만들 수 있다.
		// 무기 객체를 만들 수 있다.
		// 무기 리모콘만 들어가는 변수를 만들 수 있다.
		// 무기 리모콘은 버튼의 개수가 1개이다.
		// 무기 객체는 기능의 개수가 1개이다.
		// class 무기 { void 공격() { } } 의 의미
	}
}

class 무기 {
	void 공격() { }
}

classextends 무기 {
	void 사과를_깍다() { }
}


=====================================================================

class Main {
	public static void main(String[] args) {
		게임.작동하다();
	}
}

class 게임 {
	static void 작동하다() {
		// 오직 무기 리모콘만 저장 할 수 있는 변수가 만들어진다.
		// 그 변수의 이름은 `a무기`이다.
		// 해당 변수에는 단 한순간이라도 무기 리모콘 아닌 값이 들어갈 수 없다.
		// 그래서 현재 위 a무기 변수에는 쓰레기 리모콘이 들어있다.
		// 그 쓰레기 리모콘의 버튼 개수는 1개이다.
		// 물론 그 버튼을 누르면 오류가 난다.
		// 왜냐하면 그 쓰레기 리모콘은 객체와 연결되어 있지 않기 때문이다.
		// a무기에는 무기리모콘은 당연히 저장 될 수 있다.
		// a무기에 무기리모콘이 아닌 다른 리모콘이 저장 되려 할 때 해당 리모콘은 자동으로 무기리모콘으로 변해서 저장된다.
		// 다른 리모콘이 만약에 무기 리모콘으로 바뀌는게 안전하지 않을 수 있으면 오류가 발생한다.
		// a무기 라는 변수(공간)은 `작동하다` 함수가 시작할 때 만들어 진다.
		// a무기 라는 변수(공간)은 `작동하다` 함수가 끝날 때 사라진다.
		// 여기서 당연하게도 a무기 에 들어있던 리모콘은 변수가 사라질 때 같이 사라진다.
		무기 a무기;
		
		// 무기 객체는 객체들만 사는 나라(힙)에 저장되어 있고 그것의 수명은 `작동하다` 함수가 끝나는 것과 전혀 상관없이 계속 살아간다.
		// 단 객체는 외부에 자신을 가리키는 리모콘의 개수가 0이 되면 힙 내부에 돌아다니고 있는 가비지 컬렉터에 의해서 언젠가 제거된다.
		a무기 = new 무기();
	}
}

class 무기 {
	void 공격() { }
}

=====================================================================

class Main {
	public static void main(String[] args) {
		// `class 칼 extends 무기 { }` 의 의미 설명
		// 무기 리모콘의 버튼은 1개이다.
		// 칼 리모콘의 버튼은 2개이다.
		// 무기 클래스에 메서드 3개를 더 넣으면 무기 리모콘의 버튼은 4개가 되고 칼 리모콘의 버튼은 5개가 된다.
		// 칼 리모콘의 버튼 개수는 절대 무기 리모콘의 버튼 개수 보다 적을 수 없다.
		// 다시 말하면 칼 리모콘을 무기 리모콘 으로 바꿀 때 해야할 일은 오직 버튼을 제거하는 일 밖에 없다.
		// 하나의 리모콘을 다른 하나의 리모콘으로 바꾼다는 것은 결국 특정 버튼들을 제거하고, 특정 버튼들을 추가하는 일이다.
		// 버튼을 제거하는 일은 좀 더 불편해지는 일이지만 문제가 되진 않는다. 즉 안전한다.
		// 버튼을 추가하는 일은 좀 더 편리해지는 일이지만 문제가 될 가능성이 다분히 높다. 즉 안전하지 않다.
		// 자바에서는 안전한 일은 자동으로 해주고, 안전하지 않은 일은 개발자의 동의를 받는다.
	}
}

class 무기 {
	void 공격() { }
}

classextends 무기 {
	void 사과껍질제거() { }
}

=========================================================================

profile
같은글이있어도양해부탁드려요(킁킁)

0개의 댓글