작성
·
1.1K
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 에서도 같은 오류 가 뜨네요 . 똑같이 코딩했는데..... 제가 기초적인 부분도 잘 몰라서 그런건지 이클립스에서는 오류가 뜹니다.
클래스에 참조변수를 통해서 값을 넣는건 잘되거든요.
답변 7
0
제가 질문 글에 좀 더 설명을 드릴게요.
보통 파라미터를 넣는 곳은 값만 들어가거나 변수명만 들어갑니다.
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
한 가지 더, 혹시 앞으로 강의에서 인텔리제이 화면(이클립스 화면하고 다릅니다.)에서
회색 바탕으로 글씨가 써지는 것은 인텔리제이에서 자동 맵핑되는 내용이라고 아시면 좋습니다.
0
아이고... 일단 착오를 드려서 죄송합니다.
기초를 배우시는 분들은 착오를 하실 수 있다는 사실을 깨달았네요.
제가 해당 강의 찍을 때 사용한 툴은 intelliJ입니다.
저도 집에 와서 강의를 확인해 보니 강의를 보시는 분들은 그렇게 보이실 수 있다는 생각이 드는군요.
해당 구문은 질문자분께서 이해하신 그런 구문이 아닙니다.
cpuName:값 형태로 보일 때 앞에 키 값은 인텔리제이에서 자동으로 맵핑해서 보여주는 이름입니다.
이클립스에서 코딩하시면
this(cpuName: "amd", gpuName: "radeon");
형태가 아니라
this("amd", "radeon");의 형태입니다.
제가 지금 IDE를 켜서 코드를 확인해도 정상적인데 왜 그러지하고 강의를 확인해 보니까
인텔리제이를 안 써보신 분들은 착오를 일으키실 수 있구나, 하는 생각이 들었습니다.
해당 코드 형태는 나중에 인텔리제이를 써보시면 아시게 되실 겁니다.
혹시 인텔리제이 커뮤니티 버전이라도 한 번 써보시는 것도 나쁘지 않을 것입니다.
앞으로 Servlet/JSP 강의를 찍을 건데 그때도 비슷한 경우가 생길 것 같아서,
최대한 이클립스로 찍도록 하겠습니다.
질문 감사합니다.
질문 안 해주셨으면 그런 착오를 일으킬 수 있다는 것을 모를 뻔 했습니다.
0
: 에서 -> = 로 바꿔도 오류는 뜨네요 . 일단 빼고 값만 넣어서 다음으로 진행했습니다. 나중에 한번 확인 부탁드릴게요.
저는 자바 SE 1.8 쓰고 있습니다.
0
this가 무엇을 의미하는지 아시죠? 매개변수가 없는 생성자에서 다시 매개변수를 넣는 생성자를 호출하는 형태라는 점 이해가 되시면 좋겠습니다.
해당 형태, 변수:값은 주로 json 포맷 양식에서 쓰입니다. 자바 8 버전에서는 변수:값 형태가 거의 없다고 보시면 됩니다.
0
0
: 이게 에러이고 gpuName 참조변수에서 발생한다는 군요. 제가 밖이라서 테스트는 못하는 상황이지만 :를 =이걸로 바꿔보실래요? 저녁까지 해결이 안 되면 저도 테스트를 해보도록 하겠습니다. 일단 강의는 예제 교본을 만들어 가면서 하기 때문에 예제 코드에는 문제가 없습니다. 다 실행해 보고 만든 거거든요.