inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 기본을 위한 강의 1부

생성자 실습 2

수업 1: 56 질문드립니다.

1234

paikdabang

작성한 질문수 32

0

package lec04.OOP14.third;

public class ConsOne {

public String cpuName;

public String gpuName;

ConsOne() {

this(cpuName: "amd", gpuName: "radeon");

}

ConsOne(String cpuName, String gpuName) {

this.cpuName = cpuName;

this.gpuName = gpuName;

}

}

1: 56 이랑 똑같이 작성했는대요.  9번  this 쓴 라인에서 이클립스에서 는 오류가 떠서요 ......

<오류내용>

Multiple markers at this line

- Cannot refer to an instance field gpuName while explicitly invoking a constructor

- Syntax error on token ":", invalid AssignmentOperator

- Cannot refer to an instance field cpuName while explicitly invoking a  constructor

- Syntax error on token ":", invalid AssignmentOperator

5: 32 에서도 같은 오류 가 뜨네요 . 똑같이 코딩했는데..... 제가 기초적인 부분도 잘 몰라서 그런건지 이클립스에서는  오류가 뜹니다. 

클래스에 참조변수를 통해서 값을 넣는건 잘되거든요.

java

답변 7

0

JeongTaeHyun

제가 질문 글에 좀 더 설명을 드릴게요.

보통 파라미터를 넣는 곳은 값만 들어가거나 변수명만 들어갑니다.

showMethod(parameter1, parameter2);

이런 식으로 들어갑니다.

자바 코드에서는 아직 11 버전까지는 파라미터가 들어가는 괄호 안에 =나 : 등의 특수 문자를 허용하지 않습니다.

물론 이건 절대적이라고 말씀 드릴 수 없는게,

원래 자바는 형태가 정해지지 않은 변수 타입을 인정하지 않았습니다.

var가 대표적이죠.

하지만 버전업이 되면서 var라는 변수 타입이 생기면서 변수의 타입을 변수 명 작명 시 확정하지 않았습니다.

자바스크립트의 var를 차용해 온 것이죠.

앞으로 자바가 발전하면서 나중에는 저의 이 강의에서 알려드린 것이 달라질 수도 있습니다.

하지만 현재는 파라미터는 =나 : 등의 특수기호는 허용하지 않는다.

괄호 안에는 값이나 변수명만 들어간다. 만 알고 계시면 좋습니다.

public void showMsg(int count, String name);

형태의 메서드를 작성하게 되면 이 메서드에는

showMsg(3, "goods");

이런 형태의 값이나

int intCount = 3;

String strGoods = "goods";

showMsg(intCount, strGoods);

이런 형태만 가능합니다.

이런 사실을 아시면 앞으로 강의를 보시는데 있어서 착오가 좀 더 줄어드실 겁니다.

그럼 제 강의를 완강해 주시길 바랍니다.

수강평도 부탁 드리겠습니다.

0

JeongTaeHyun

한 가지 더, 혹시 앞으로 강의에서 인텔리제이 화면(이클립스 화면하고 다릅니다.)에서 

회색 바탕으로 글씨가 써지는 것은 인텔리제이에서 자동 맵핑되는 내용이라고 아시면 좋습니다.

0

JeongTaeHyun

아이고... 일단 착오를 드려서 죄송합니다.

기초를 배우시는 분들은 착오를 하실 수 있다는 사실을 깨달았네요.

제가 해당 강의 찍을 때 사용한 툴은 intelliJ입니다.

저도 집에 와서 강의를 확인해 보니 강의를 보시는 분들은 그렇게 보이실 수 있다는 생각이 드는군요.

해당 구문은 질문자분께서 이해하신 그런 구문이 아닙니다.

cpuName:값 형태로 보일 때 앞에 키 값은 인텔리제이에서 자동으로 맵핑해서 보여주는 이름입니다.

이클립스에서 코딩하시면 

this(cpuName: "amd", gpuName: "radeon");

형태가 아니라

this("amd", "radeon");의 형태입니다.

제가 지금 IDE를 켜서 코드를 확인해도 정상적인데 왜 그러지하고 강의를 확인해 보니까

인텔리제이를 안 써보신 분들은 착오를 일으키실 수 있구나, 하는 생각이 들었습니다.

해당 코드 형태는 나중에 인텔리제이를 써보시면 아시게 되실 겁니다.

혹시 인텔리제이 커뮤니티 버전이라도 한 번 써보시는 것도 나쁘지 않을 것입니다.

앞으로 Servlet/JSP 강의를 찍을 건데 그때도 비슷한 경우가 생길 것 같아서,

최대한 이클립스로 찍도록 하겠습니다.

질문 감사합니다.

질문 안 해주셨으면 그런 착오를 일으킬 수 있다는 것을 모를 뻔 했습니다.

0

paikdabang

:  에서 ->  = 로 바꿔도 오류는 뜨네요 . 일단 빼고 값만 넣어서 다음으로 진행했습니다.   나중에 한번 확인 부탁드릴게요.

저는 자바 SE 1.8 쓰고 있습니다.

0

JeongTaeHyun

this가 무엇을 의미하는지 아시죠? 매개변수가 없는 생성자에서 다시 매개변수를 넣는 생성자를 호출하는 형태라는 점 이해가 되시면 좋겠습니다.

해당 형태, 변수:값은 주로 json 포맷 양식에서 쓰입니다. 자바 8 버전에서는 변수:값 형태가 거의 없다고 보시면 됩니다.

0

paikdabang

매개변수에   cpuName 하고 gpuName 빼고 값만 넣으니 잘나오네요 . 잘 해결된거 같습니다 ㅎ  

0

JeongTaeHyun

: 이게 에러이고 gpuName 참조변수에서 발생한다는 군요. 제가 밖이라서 테스트는 못하는 상황이지만 :를 =이걸로 바꿔보실래요? 저녁까지 해결이 안 되면 저도 테스트를 해보도록 하겠습니다. 일단 강의는 예제 교본을 만들어 가면서 하기 때문에 예제 코드에는 문제가 없습니다. 다 실행해 보고 만든 거거든요.

필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)

0

9

2

질문있습니다

0

21

1

1번 문제 질문입니다.

0

24

1

26년 1회 실기 해설 강의

0

43

2

음악플레이어 문제 중 코드질문

0

20

1

잠겨버린 사물함 시간초과 관련 질문입니다.

0

18

1

도메인 모델에서 관계와 규칙을 구분하는 방법

0

31

2

프로젝트 질문 문의

0

38

1

문제와 풀이4 문제점

0

32

2

DDD 는 마이바티스와 잘 맞지 않는건가요?

0

41

1

스프링부트 버전 문의드립니다.

0

31

1

53번 4-1 자료 오류 있는 것 같습니다.

0

65

2

질문 드립니다.

0

266

1

팩토리얼 질문드립니다.

0

247

1

자바 패키지 질문

1

309

1

JDK 문의

1

201

1

11:26~(생성자 실습)부터 질문있어요

1

225

2

강의소스

1

297

1

안녕하세요. 강사님

1

297

2

강사님 혹시 wms 나 erp 시스템 개발 si에서 경험해 보신적있나요?

0

1203

4

리눅스 질문드립니다.

0

489

1

팩토리 질문입니다.

0

189

2

안녕하세요. 강의 잘 듣고있습니다. ~^^

0

172

1

강사님 혹시 현업에서 JPA 많이 쓰나요?

0

636

1