안녕하세요... 자기참조 관련 질문입니다..
핫레드
import java.io.*;
import java.text.*; //날짜관련 API
import java.util.*;//날짜 관련 API
class JBank { //JBank 클래스
private String name;// 멤버 필드
private double money;// 멤버 필드
private String date;// 멤버 필드
private static float interest;// 멤버필드
private static BufferedReader in;// 멤버필드
private static SimpleDateFormat format; // 멤버필드
private static String pass;//멤버필드
static {
interest = 5;
in = new BufferedReader(new InputStreamReader(System.in));
format = new SimpleDateFormat(yyyy년 MM월 dd일 HH시 mm분);
pass = 1111;
} // 지정예약어 static초기화
private JBank next; //이부분을 잘모르겟습니다 인터넷도 찾아보고 책도찾아밧는대 자기참조 라는말만있는대 정확이 next 가무었인지 잘모르겟습니다..이부분이 궁금합니다
public void open_account() throws IOException { //신규가입
System.out.println(== 신규 가입 ==);
System.out.print(이름 = );
name = in.readLine();
System.out.print(입금 금액 = );
money = Double.parseDouble(in.readLine());
date = format.format(new Date());
System.out.println();
System.out.println(신규 가입이 + date + 에 처리 되었습니다.);
System.out.println(입금한 금액은 + money + 원 입니다.);
System.out.println(현재 적용 이율은 + JBank.interest + %입니다.);
System.out.println(== 신규 가입 끝 ==);
money += money * JBank.interest / 100;
this.setNext();//이부분도 next 랑 관련돼있는거같은데.. 정확한개념을 모르겠습니다..
}
public static void change_interest() throws IOException {
System.out.print(관리자 패스워드를 입력하세요 : );
String pw = in.readLine();
if(!pw.equals(pass)) {//equals(인터넷으로 찾아보니 == 과 비슷한 기능이라고하던데 객체끼리의 비교라는걸로알고있는데 제가 잘알아본건지 궁금합니다
System.out.println(패스워드가 올바르지 않습니다.);
return;
}
System.out.println(현재 + JBank.interest + %의 이율이 적용되고 있습니다. 얼마로 변경 하시겠습니까?);
System.out.print(적용 이율 = );
JBank.interest = Float.parseFloat(in.readLine());
System.out.println(모든 고객에게 + JBank.interest + %로 변경 적용됩니다.);
}
public void view_account() {
System.out.println(== 현재 등록 고객 정보 ==);
System.out.println(이름\t금액\t이율);
System.out.println(==============================);
JBank custom = this;//이것도 next와 관련대이었는 부분같은데 정확하게모르겟습니다.. 여기서 this 어떤것을 의미하는지도 잘모르겟습니다..
while(custom.next != null) {//next가 몬지알아야 이해하는데..ㅠㅠ
System.out.print(custom.name + \t);
System.out.print(custom.money + \t);
System.out.println(JBank.interest);
custom = custom.next;//이부분도입니다..ㅠㅠ
}
System.out.println(==============================);
}
public static void end_bank() {
System.out.println(은행 영업을 마감합니다. 수고하셨습니다.);
System.exit(0);
}
public JBank getNext() {//next가 어떤값을 보내는지 잘모르겟습니다
return next;
}
private void setNext() {
next = new JBank();//next란 개념을 잘모르겟습니다
}
}
public class JBank_Process {
public static void main(String[] ar) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
JBank bank = new JBank();
while(true) {
System.out.print(1.신규가입 2.이율변경 3.등록인원정보 4.종료 == );
int pos = Integer.parseInt(in.readLine());
if(pos == 1) {
JBank jb = bank;
if(jb.getNext() != null) {
jb = jb.getNext();
}//next 를 파악을못해 if(==1)부분부터 이해가 안갑니다
jb.open_account();
}
else if(pos == 2) {
JBank.change_interest();
}
else if(pos == 3) {
bank.view_account();
}
else if(pos == 4) {
JBank.end_bank();
}
else {
System.out.println(잘못 입력 하셨습니다.);
}
System.out.println();
}
}
}
==================================================================================================================
너무 무책임하게 물어본거아닌가라는 생각도 드는대..책도 찾아보고 인터넷도 찾아보았습니다..
인터넷에는 자기참조구조체라고나왔는데 C++ 관련 바게 없는거같습니다 가장궁금한건 next 가 무었인지 궁금합니다
클래스도 아니인거같고 메서드도 아니인거같고 필드도 아니인거같은대 어떤 일을 하는건지 잘모르겟습니다...
짐작하는걸로는 자기자신을 참조해서 저장하는 거같기는 한대 저만의 상상력으로는 이해가 잘안갑니다..
아니면 전혀 잘못생각하고있는건지...
나름 잘이해하고 따라 가고있다고 생각하는대 책애도 없고 인터넷을찾아바도 이해가 잘안대서 조금 답답합니다
부탁좀 드리겟습니다....
-
라
감사합니다!! 답변이 늦었네요 ㅠㅠ 아그래도 제가 생각한게 맞네요 ㅠㅠ 답변이 늦어서 한 3일똥안 인터넷뒤지고 책 처음부터보고 ㅠㅠ 단순한거엿는데 저한테는 생소한거여서 너무 어렵게생각한게 문제엿던거같에요 ㅠㅠ
감사합니다! -
두동
메인에서 JBank 클래스 생성함... JBank안에는 JBank클래스형태를 받을 수 있는 변수 next가 존재 여기까지가 1번이라고 생각하세요.. 1번에서 this는 자기 자신을 가리킴.. 자기자신의 메서드인 1.setnext를 부르면 1번의 next값이 JBank를 가진 2번을 생성함.. 1번의 next는 2번을 가리킴... 링크드리스트 생각해보시면 될것같네요..
-
나슬
private JBank next; -- 이부분은 JBack 란 클래스를 next 란 이름 으로 인스턴트를 얻기 위해 쓴거 같습니다.
next = new JBank(); -- 이부분,
다른 next() 함수랑 구별하시면 될것 같네요 이름을 바꾸시면 이해하기가 쉽게 되실수도
예를 들어 private JBank next; -- private JBank jbank; 이런식으로
jbank = new JBank();