안녕하세요. 스코리아입니다.
오늘은 자바 참조 자료형 변수를 정의하여 사용하는 방법에 대해서 알아보겠습니다.
그전에 자바의 기본형 타입과 참조형 타입의 차이를 알고 계시나요?
모르고 계신다면 이 포스팅을 읽기 전에, 제가 이전에 작성했던 내용을 꼭 참고해 보시기 바랍니다!
[이전 내용] 자바 기본형 타입 vs 참조형 타입 차이점 정리 https://skorea6.tistory.com/8
참조 자료형
- 변수의 자료형은 두 가지로 나뉩니다.
- 기본 자료형(기본형 타입)에는 int, long, float, double 등이 존재하고 참조 자료형(참조형 타입)에는 기본형을 제외한 모든 것이 해당됩니다. 예를 들면 String, Date, Student(객체) 등이 존재합니다.
- 참조 자료형은 클래스 형으로 변수를 선언합니다.
- 기본 자료형은 사용하는 메모리의 크기가 정해져 있지만, 참조 자료형은 클래스에 따라 다릅니다.
참조 자료형을 정의하여 사용하기
- 학생이 수강한 과목들에 대한 성적을 산출하려면 클래스 구조를 어떻게 만들어야 할까요?
- 학생 클래스 안에 국어 성적, 수학 성적, 과목 이름 등이 들어가면 불합리한 구조일 것입니다.
- 학생 (Student) 클래스와 과목 (Subject) 클래스를 분리하여 사용하고, 과목 (Subject) 클래스를 활용하여 수강한 과목들의 변수 타입으로 선언해야 합니다.
두 명의 학생이 각각 두 과목의 수업을 들었습니다. Soo 학생은 국어 95, 수학 100점입니다. Park 학생은 국어 98, 수학 65입니다.
각 두 학생의 총점을 출력하세요
public class Subject {
String subjectName;
int score;
}
우선 Subject.java를 만들어주었습니다. 멤버 변수로는 과목이름 (subjectName)과 과목점수 (score)가 필요합니다.
public class Student {
String studentName;
Subject korea;
Subject math;
public Student(String name) {
studentName = name;
korea = new Subject();
math = new Subject();
}
public void setKoreaSubject(String name, int score) {
korea.subjectName = name;
korea.score = score;
}
public void setMathSubject(String name, int score) {
math.subjectName = name;
math.score = score;
}
public void showStudentScore() {
int total = korea.score + math.score;
System.out.println(studentName + " 학생의 총점은 " + total + "점 입니다." );
}
}
다음은 Student.java입니다.
- 멤버변수로는 학생이름(studentName), 국어과목 객체 (korea), 수학과목 객체 (math)를 지정해 주었습니다.
- Subject 변수는 아직 생성된 인스턴스가 아니므로, Student 생성자 속에 new Subject()로 인스턴스를 생성하여 사용하였습니다.
- showStudentScore() 매개변수에서는 국어과목의 점수와 수학과목의 점수를 더하여 total 변수에 저장한 뒤, 학생이름과 함께 총점을 출력하였습니다.
이제 만든 객체를 직접 사용해 봅시다.
public class StudentTest {
public static void main(String[] args) {
Student studentSoo = new Student("Soo");
studentSoo.setKoreaSubject("국어", 95);
studentSoo.setMathSubject("수학", 100);
Student studentPark = new Student("Park");
studentPark.setKoreaSubject("국어", 98);
studentPark.setMathSubject("수학", 65);
studentSoo.showStudentScore();
studentPark.showStudentScore();
}
}
- new Student("Soo")를 이용하여 학생이름이 Soo 인 Student 인스턴스를 생성하였습니다.
- studentSoo 인스턴스의 setKoreaSubject와 setMathSubject 매소드를 호출하여 Subject 과목이름과 과목점수를 각각 저장하였습니다.
- 1과 같이 학생이름이 Park인 Student 인스턴스를 생성하고 2와 같은 과정을 거쳤습니다.
- showStudentScore() 매소드가 호출되면서, 학생의 이름과 총점이 출력됩니다.
지금까지 예시를 통하여 자바(JAVA)의 참조 자료형을 구현해 보고 정의해 보았습니다.
읽어주셔서, 감사합니다.
'JAVA > 객체지향' 카테고리의 다른 글
자바 this / this() 뜻, 의미, 사용방법에 대해서 (1) | 2023.08.15 |
---|---|
자바 접근 제어 지시자와 정보은닉을 활용한 캡슐화 (객체지향) (0) | 2023.08.14 |
자바 생성자 의미와 구현, 그리고 생성자 오버로딩 뜻? (1) | 2023.08.10 |
자바 메소드 의미, 인스턴스 생성과 힙메모리란? (feat. 객체) (1) | 2023.08.09 |
자바 함수 정의, 호출 방법과 스택 메모리란? (0) | 2023.08.07 |