1079
2017-12-27 03:39:32
0
"강좌들 보면 이름좀 다르게 해주지 맨날 갖게 설명해서 처음 듣는 수강생들 헷갈리게 하더라구요..." 대문자와 소문자를 다르게 인식하는 언어의 경우 Car 와 car 는 서로 다르게 인식합니다. (대소문자를 구별하지 않는 언어도 있지만 자바는 대소문자를 구분합니다.) 컴퓨터는 Car 와 car 가 서로 다른 것을 알고 있습니다. 그러나 Car 와 car 는 사람이 보기에(또는 논리적으로) 어떤 연관이 있기 때문에 일부러 같은 이름을 쓰는 것 입니다.
"Car car = new Car(); 이것들이 가르키는게 어떤건지 헷갈립니다." 여기서, Car 는 자료형입니다. 이 형태로 어떤 변수를 만들 수 있습니다. 그렇게 만든 변수에 car 라는 이름을 붙인 것 이고요. "new Car()"로 Car 형태의 무언가를 만듭니다. 이렇게 만든 것을 "car = new Car()"로 car 라는 이름에 붙입니다. car 라는 변수는 Car 형태의 변수입니다. 그래서 변수를 선언할 때 "Car car" 라고 선언합니다. 이 모든 것을 합쳐서 "Car car = new Car();" 라고 한 것 입니다. 따로 띄어서 쓰면, "Car car;" 와 "car = new Car(); " 입니다.
"benz iCanChange = new Car();" 의 경우도 비슷합니다. 이 문장은 "benz iCanChange;" 와 "iCanChange = new Car();" 로 나눌 수 있습니다. iCanChange 라는 이름은 바뀔 수도 있으니 여기서 중요한 것은 아닙니다. benz 라는 자료형과 Car 라는 자료형이 서로 호환이 가능한 것인가가 문제입니다. 만일 호환이 가능하다면 benz 형 변수인 iCanChange 에 "new Car()"로 만든 것을 붙일 수 있을것이고 호환이 되지 않는다면 붙일 수 없을 것 입니다.
어떤 자료형이 다른 자료형과 호환이 되는가는 어떤 자료형이 다른 자료형으로 자동으로 변환될 수 있는가 하는 문제입니다. 만일, 그 자료형을 만들 때 다른 자료형으로 어떻게 변환된다는 것을 미리 정의해두었다면 당연히 다른 자료형과 호환되겠죠. 어떤 자료형으로 다른 자료형을 만든다면(상속) 그 자료형과 파생되는 자료형 사이에 변환되는 규칙을 자동으로 만들기도 합니다. benz 자료형이 어떻게 만들어졌는지 모르지만 Car 자료형과 어떤 관련이 있을 것 같네요.