메소드 안이 아닌 클래스 영역 안에 있는 애들을 필드라고 합니다.
public class Student {
String name;
int kor;
int eng;
int math;
int sum;
double avg;
}
Student 클래스에 이런 틀을 정해주고
public class StudentMain {
public static void main(String[] args) {
Student st=new Student();
st.name="이순신";
st.kor=100;
st.eng=90;
st.math=100;
st.sum=st.kor+st.math+st.eng;
st.avg=st.sum/3.0;
Student st2=new Student();
st2.name="홍길동";
st2.kor=70;
st2.eng=70;
st2.math=100;
st2.sum=st2.kor+st2.math+st.eng;
st2.avg=st2.sum/3.0;
Student st3=new Student();
st3.name="강감찬";
st3.kor=90;
st3.eng=100;
st3.math=80;
st3.sum=st3.kor+st3.math+st3.eng;
st3.avg=st3.sum/3.0;
}
}
StudentMain클래스에서 출력할 때
System.out.println("이름: "+st.name+", 국어: "+st.kor+", 영어: "+st.eng+", 수학: "+st.math);
System.out.println("총점: "+st.sum+"평균: "+st.avg);
이렇게 일일이 하기 귀찮으니까
student 클래스에서
alt+shift+s → generate toString
출력하고싶은 객체 선택하면 이렇게 오버라이딩이 됩니다.
public class Student {
String name;
int kor;
int eng;
int math;
int sum;
double avg;
//오버라이딩
@Override
public String toString() {
return "학생 [name=" + name + ", kor=" + kor + ", eng=" + eng + ", math=" + math + ", sum=" + sum + ", avg="
+ avg + "]";
}
}
StudentMain 클래스에서
System.out.println(st);
System.out.println(st2);
System.out.println(st3);
이렇게 출력하면
아까 student에서 오버라이딩한 포맷대로 출력됩니다.
만약에 오버라이딩 안하고 그냥 System.out.println(st);하면 스택영역에 있는 값, 즉 주소값을 출력합니다.
'자바' 카테고리의 다른 글
버블 소팅 이용한 로또 예제 (0) | 2024.07.12 |
---|---|
배열 복사 (0) | 2024.07.12 |
배열, 필드 데이터 담기 (0) | 2024.07.12 |
문자 맞히기 게임 예제 (0) | 2024.07.10 |
이클립스 디버깅 (0) | 2024.07.10 |