자바 질문있쓥니당!!!

package aaaa;
public class Box{
private int width,height;
private char fillChar;
public Box(){
this(10,1);
}
public Box(int width, int height){
this.width=width;
this.height=height;
}
public void draw(){
for(int i=0; i<height; i++){
for(int j=0; j<width; j++)
System.out.println(fillChar);
System.out.println(" ");
}
}
public void fill(char c){
this.fillChar=c;
}
public static void main(String[] args){
Box a = new Box();
Box b = new Box(20,3);
a.fill('*');
b.fill('%');
a.draw();
b.draw();
}
}


실행하면 
*
*
*
*
*
*
*
*
*
*

%
%
%
%
%
%
%
...

이렇게 \n 가 붙여지는데

나는 
**********
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
이렇게 표현하고싶은데 뭘 바꿔야할까?

19개의 댓글

println은 출력을 대상+줄바꿈으로 해주는 메서드임. print를 사용하면 됨.
0
2018.04.16
@알파스트라이크
오 땡큐땡큐 아까것도 도와줬지? 고마어!!
0
2018.04.16
@알파스트라이크
질문 하나 더 해도 될까?

저 제일위 클래스중에서 this 를 왜 써야하는거야? 어떻게 책찾아서 했는데 도저히 모르겠어... this 사용법을
0
@쏠탈플리즈
this는 클래스에서 이미 선언된 자기자신을 나타내는 지시자임.
자바에서 클래스 안의 멤버나 메서드를 사용할 때
System.out.print(출력할 값);
AAA.변수명 = 대입할 값;
BBB.메서드명();
이런 식으로 앞에 해당 객체(클래스)를 표기해서 나타내잖아.

그럼 클래스내에서 자기 클래스 자신을 나타낼 땐 어떻게 할까? 그럴 때 this를 쓰는거임.
0
2018.04.16
@알파스트라이크
public Box(){
this(10,1);
}
public Box(int width, int height){
this.width=width;
this.height=height;
}
요것중에 this(10,1)은 그럼 어떤 함수를 불러온거야???
진짜 미안해 빡대가리라 이해가 잘 안가 ㅠ
군대다녀와서 할라니까ㅜ
그래도 c랑 c++은 a+이었는데 ㅠㅠ
0
@쏠탈플리즈
간단해 this가 클래스 자기 자신이라 했잖아. Box 클래스 내에서 쓰이니 당연히 this(숫자, 숫자)면 밖에서 볼 때 Box(숫자, 숫자) 랑 같다는 소리임.
즉 Box()로 매개변수를 안쓴 생성자를 사용할 때는 this(10, 1) 즉 Box(10, 1)이거로 보겠단 거임.
0
2018.04.16
@알파스트라이크
오오 조금 뭔가 알거같아!
0
@쏠탈플리즈
예를 들면 위 코드에서 8, 9, 10행을 보면
public Box(int width, int height){

this.width=width;

this.height=height;

이잖아?

생성자인데(해당 객체를 사용할 때 객체를 생성, 초기화 하는 내용을 알려주는 거라 보면 됨)
앞의 this.width와 this.height는 세 번째 줄에서 선언한 선언한 클래스의 멤버 private int width, height;임. 뒤에 = width; =height;는 8번째 출에서 생성자 구분의 매개변수로 들어가 있는 값이고. 표기를 둘다 똑같이 width, height로 해서 같아서 헷갈릴 수 있는데 두개가 서로 다름.

즉 3번째 줄, 8, 9, 10줄을 말로 하자면 '나 클래스 Box는 private 멤버 인트형 width, height 가지고 있음(세번째 줄) 그리고 Box a = new Box(width, height);로 날 생성하면(8번째 줄)
나(this)의 width 멤버엔(this.width) 첫번째 매개변수로 전해준 width를 넣고 나의 height멤버엔(this.height) 두번째 매개변수 변수로 전해준 height를 넣겠음.(9, 10번째 줄)
이거임.
0
2018.04.16
@알파스트라이크
아하 그러니까 this.width=width는 제일 위에 private에있는 wideth 에다가 매개변수로 받은 width를 넣으라는 뜻인거지??

여기서 this를 쓰는 이유가 width가 매개변수를 칭하는건지 젤위에 private로 선언한 width인지 몰라서 쓰는거란 말이지?

그럼 private에 만약에 wid라고 선언했으면

똑같은자리에 wid= width; 쓰면 가능한문장이야?
0
@쏠탈플리즈
앞부분에 this는 써 줘야지
0
2018.04.16
@알파스트라이크
아하 this는 꼭 써줘야 하는구나??
0
@쏠탈플리즈
ㅇㅇ 그냥 main 안에 임의로 만든 혼자 노는 변수가 아니라 클래스가 자기 단위로 가지고 있는 변수 즉, 멤버 잖아. 따라서 소속을 언급해 주는 셈이지. 그리고 저 경우엔 자기 클래스 안에서 언급하는 거니 그 클래스 언급을 this로 하는거고.

함수와 메서드의 관계도 역시 마찬가지. 메서드는 클래스 소속이니 앞에 클래스명을 써 주는거.

System.out.println() 같이 지금 그냥 쓰고 있는 함수들도 죄다 그렇게 호출되는 거임. System이란 객체 내에 out 안에 있는 println()이란 메서드를 불러오는 거.
0
2018.04.16
@알파스트라이크
아하!~ System도 클래스였던거였네!?
System 클래스 안에 out 클래스 안에 있는 println함수를 불러온거구나?
0
2018.04.16
@쏠탈플리즈
아 private는 왜쓰는건지 또 질문해도 돼?
0
@쏠탈플리즈
ㅇㅇ 내가 아는건 답해줄 수 있음
private는 접근 제한자. public을 쓰면 클래스 밖에서도 접근이 가능하고 private를 쓰면 클래스 밖에서 직접 접근이 안됨.
0
2018.04.16
@알파스트라이크
너 참 설명 잘한다
잘 아는거랑 설명 잘하는거랑은 다른건데

물론 잘 알아야 잘 설명하는건 맞는데
아주아주 정확히 알아야 설명할 수 있잖아

너의 실력이 부럽다 고마워 도움 정말 많이 됐어
0
@쏠탈플리즈
조금 더 첨언하자면

예를 들면 위에 Box의 private 멤버로 width, height를 선언하고 값 대입은 생성자 Box() 또는 Box(m, n)으로 하잖아?
그런데 별도로 Box a = new Box(); 한 뒤 a.width = k; 같은 식으로 직접 private멤버인 width를 언급해서 변경이 안됨.

반면 그 아래 생성자 Box(), Box(int width, int height)와 draw, fill 메서드는 public으로 선언되어 있잖아?

저 경우는 클래스 밖에서 접근이 가능하단 소리지.
즉 밖에서 Box b = new Box(20, 3);으로 생성이 가능하고
fill은 public이니 b.fill(캐릭터); 형태로 메서드 사용이 가능.

만약 private로 선언된 멤버나 메서드를 외부에서 어떻게든 접근하려면 public으로 접근 가능한 메서드를 '클래스 안에' 만들어서 클래스가 직접 이를 불러오고 변경하는 방식 즉 간접적으로 접근해야 함.
즉 저 class Box 안에 public void changeWidth(int m_wide){ this.width = m_width; } 같은 메서드를 만들어주고 밖에서 a.changeWidth(4); 이런식으로 써야 함.
0
@쏠탈플리즈
ㅎㅎ 칭찬 고마워 사실 나도 잘안다기 보단 처음 배울 때 누구나 많이 헷갈리잖아. 그런거 파다보면 나중에 아 누가 나한테도 이렇게 가르쳐줬으면 이해 잘됐겠다 생각이 들어서 그런건지도.
0
2018.04.16
고마워 할 줄 아는 사람
0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
180476 [견적] 그냥 조립식 컴터 살려구 하는데 괜찮은가 봐주세요 6 메카다나카 0 31 분 전 40
180475 [컴퓨터] 모니터 삿다 8 or5469 0 32 분 전 23
180474 [컴퓨터] 형님들 컴맹이 윈도우 관련 질문 드립니다 4 우루루옳지 0 4 시간 전 95
180473 [컴퓨터] 님들 랜선 연결 어케해요? 12 플랑크톤상점버거 0 7 시간 전 242
180472 [컴퓨터] 올그떠 보인다길래 삭제함 Benetton 0 19 시간 전 175
180471 [잡담] wh xm4 끼고 자다가 오른쪽 박살남ㅠㅠ 8 곰문곰문곰문곰문... 0 19 시간 전 324
180470 [컴퓨터] 컴퓨터 완본체 샀는데 깔아야할 드라이버나 설정 있나요? 10 하이웨이 0 1 일 전 273
180469 [잡담] 좆데온 8천번대보다 7900xtx가 9 전기모기채는신이야 0 1 일 전 337
180468 [컴퓨터] 형님들 견적짠거 호환 문제없는지 확인 부탁드립니다 2 우루루옳지 0 1 일 전 113
180467 [정보] 크러쉬80 - 레이니75를 만든 Wob의 텐키리스 키보드 2 Veigrake 0 1 일 전 267
180466 [잡담] 여기 로봇 청소기도 물어봐도 됨?? 15 년째재수강 0 1 일 전 227
180465 [잡담] 윈도우12 전부 레거시쳐낸다는말이 하드웨어를 말한거구나 4 이거보인다면기분탓임 0 1 일 전 372
180464 [컴퓨터] 갤럭시80 넘나 이쁜것이예요 2 군마 1 1 일 전 457
180463 [모바일] 차량용 맥세이프 충전기 탁상용으로 쓰니 좋다 4 년째군대 0 1 일 전 227
180462 [잡담] 채터링 어캐잡습니까... 7 로우팡맨 0 1 일 전 215
180461 [잡담] 4월에 마우스 큰 게 두 개 나오네 16 GNStout 0 1 일 전 332
180460 [컴퓨터] 무선 키보드 마우스 세트는 별로인가? 3 하이웨이 0 1 일 전 154
180459 [컴퓨터] 10만원대 포터블 모니터는 사는거 아니더라 17 코싸멘뚜 0 1 일 전 298
180458 [정보] 레이니75 저격하는 브릿지75 19 Veigrake 0 1 일 전 391
180457 [잡담] 드디어 왔다 레이니 5 ltearl 0 1 일 전 331