Programming

; develop a program

Back-End/Java

[Java] 참조 자료형

Clloud_ 2023. 2. 1. 13:39
반응형

이번 포스팅에서는 자바(Java)에서 참조 자료형에 대하여 공부를 해보고자 한다.

 


참조 자료형이란

자바에는 크기가 정해진 기본 자료형(int, char, float, double 등)으로 선언하는 변수가 있고, 클래스 자료형으로 선언하는 참조 자료형 변수가 있다.

 

기본 자료형과 참조 자료형의 차이점

  • 기본 자료형은 사용하는 메모리가 정해져 있는 자료형
  • 참조 자료형은 클래스를 타입으로 변수를 선언하는 자료형

 

참조 자료형 구현

어떤 학생이 국어와 수학 과목을 수강하는데, 시험을 본 후 국어 성적과 수학 성적 정보를 저장하는 프로그램을 만들려고 한다.

우선 다음처럼 학생 클래스를 만들었다.

public class Student1 {
    int studentID;
    String studentName;
    int koreaScore;
    int mathScore;
}
  • String이 JDK에서 제공하는 참조 자료형이다.
  • 나머지 변수는 기본 자료형이다.

 

현재 성적을 저장하는 변수가 두 개(int koreaScore, int mathScore) 있다.

만약 성적뿐만 아니라 이 학생이 수강하는 과목의 이름도 함께 저장해야 한다면 다음과 같이 String을 사용해서 과목 이름 변수를 추가한다.

public class Student2 {
    int studentID;
    String studentName;
    int koreaScore;
    int mathScore;
    String koreaSubject;	//과목 이름 변수 추가
    String mathSubject;
}

 

위 클래스는 학생에 대한 클래스인데 과목에 대한 변수가 늘어나고 있다.

이 문제를 해결하기 위해 과목의 이름과 성적을 Subject라는 클래스로 분리하고, 학생에 Subject 변수를 각 과목별로 추가하려 한다.

그러면 다음과 같은 클래스의 관계도가 나올 것이다.

 

 

위 내용을 현재 사용하는 변수 형태로 보면 다음과 같다.

 

 

과목을 의미하는 Subject라는 클래스를 만들고 과목의 이름과 점수를 멤버 변수로 가지고 있다.

이렇게 수정하면 과목과 관련된 내용은 Subject 클래스로 분리하여 구현할 수 있다.

 

현재 두 과목을 수강하므로 Subject형 변수를 두 개 선언해야 한다.

과목 클래스

public class Subject {
    String SubjectName;
    int scorePoint;
}

 

학생 클래스

public class Student3 {
    int studentID;
    String studentName;
    Subject Korean;	//Subject형을 사용하여 선언
    Subject math;
}
  • 기존의 Student2 클래스에 과목 이름을 추가해야 한다면 koreanSubjectName, mathSubjectName 이렇게 두 개의 변수를 추가해야 한다.
  • Subject로 클래스를 분리하면 subjectName은 Subject 클래스에 선언하면 된다.

 

참조 자료형은 필요에 의해 만든 클래스를 사용할 수도 있고, JDK에서 제공하는 클래스를 사용할 수도 있다.

기본 자료형을 사용하듯이 클래스 자료형 변수를 선언해서 사용한다고 생각할 수 있다.

 


반응형

'Back-End > Java' 카테고리의 다른 글

[Java] this 예약어  (0) 2023.02.02
[Java] 정보 은닉(Information Hiding)  (3) 2023.02.01
[Java] 생성자(Constructor)  (0) 2023.02.01
[Java] 클래스와 인스턴스  (0) 2023.01.31
[Java] 메서드(Method)  (0) 2023.01.31