# 16. Java의 참조 자료형에 대해 알아보자!
안녕하세요! 하프입니다😋
변수의 자료형에는 크기가 정해진 기본 자료형과 클래스 자료형으로 선언하는 참조 자료형이 있습니다. 기본 자료형은 여기에서 알아봤으니 이번 글에서는 참조 자료형에 대해 자세히 알아보도록 할게요!
이 글은 <Do it! 자바 프로그래밍 입문> 책을 읽고 이해한 내용을 바탕으로 작성되었습니다😉
1. 참조 자료형
하프가 국어와 수학 시험을 봤습니다. 시험을 본 후 국어 성적과 수학 성적 정보를 저장하는 프로그램을 만든다고 생각해볼게요! 먼저 클래스가 제공해야 하는 멤버 변수와 메서드를 만들어볼까요?
public class Student1 {
int studentID;
String studentName;
int kScore;
int mScore;
}
여기에서 사용하는 String이 JDK에서 제공하는 참조 자료형입니다! 문자열을 저장하는 자료형입니다. 나머지 변수는 기본 자료형으로 선언했습니다. 그런데 성적뿐만 아니라 하프가 수강하는 과목 이름도 함께 저장해야 한다면 어떻게 하죠?! 간단하게 String을 사용하여 과목 이름 변수를 추가할 수도 있겠지만, 그렇게 구현하면 과목에 대한 변수가 너무 많아질 것 같네요...
이러한 문제를 해결하기 위해서는 과목의 이름과 성적을 Subject라는 클래스로 분리하고, Student1 클래스에 Subject 변수를 추가하면 된다고 하네요! 클래스 간의 관계를 그림으로 살펴봅시다!
과목을 의미하는 Subject라는 클래스를 만들고, 과목의 이름과 점수를 멤버 변수로 추가합니다. 이렇게 수정하면 과목에 관련된 내용은 Subject 클래스로 분리하여 구현할 수 있게 되죠! 또한 Student는 Subject 클래스를 멤버 변수로 가지면 됩니다. 하프는 국어와 수학, 두 과목을 수강하기 때문에 Subject형 변수 두 개를 선언했습니다!
public class Subject {
String SubjectName;
int scorePoint;
}
public class Student {
int studentID;
String studentName;
Subject korean;
Subject math;
}
짜잔! 이렇게 두 개의 클래스로 구현했습니다. 만약 Student 클래스에 과목 이름 변수를 선언한다면 국어 과목과 수학 과목 이름 변수, 총 두 개의 변수를 선언해야 할 것입니다. 하지만 Subject로 클래스를 분리하면 과목 이름은 Subject 클래스에 선언하면 됩니다. 과목 이름은 korean.subjectName, math.subjectName으로 사용할 수 있어 조금 더 편리하겠죠!
이번 글에서는 Student 클래스와 Subject 클래스 예제를 살펴보면서 참조 자료형을 어떻게 사용하는지 알아보았습니다! 참조 자료형은 JDK에서 제공하는 클래스(String 등) 또는 프로그래머가 만든 클래스를 사용할 수 있습니다. 클래스 자료형 변수를 선언해서 사용하면 코드가 길어지지 않고, 하나의 객체를 구현할 때 그 객체와 맞지 않는 변수가 계속 늘어나는 것을 방지할 수 있어서 좋은 것 같아요! 다음 글에서는 정보 은닉에 대해 알아보도록 할게요! 😊