본문 바로가기
JAVA/객체지향

자바 참조 자료형 변수 정의하기, 사용 방법 (feat. 객체)

by 스코리아 2023. 8. 12.

안녕하세요. 스코리아입니다.

오늘은 자바 참조 자료형 변수를 정의하여 사용하는 방법에 대해서 알아보겠습니다.

 

그전에 자바의 기본형 타입과 참조형 타입의 차이를 알고 계시나요?

모르고 계신다면 이 포스팅을 읽기 전에, 제가 이전에 작성했던 내용을 꼭 참고해 보시기 바랍니다!

[이전 내용] 자바 기본형 타입 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입니다.

  1. 멤버변수로는 학생이름(studentName), 국어과목 객체 (korea), 수학과목 객체 (math)를 지정해 주었습니다.
  2. Subject 변수는 아직 생성된 인스턴스가 아니므로, Student 생성자 속에 new Subject()로 인스턴스를 생성하여 사용하였습니다.
  3. 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();
	}
}
  1. new Student("Soo")를 이용하여 학생이름이 Soo 인 Student 인스턴스를 생성하였습니다.
  2. studentSoo 인스턴스의 setKoreaSubject와 setMathSubject 매소드를 호출하여 Subject 과목이름과 과목점수를 각각 저장하였습니다.
  3. 1과 같이 학생이름이 Park인 Student 인스턴스를 생성하고 2와 같은 과정을 거쳤습니다.
  4. showStudentScore() 매소드가 호출되면서, 학생의 이름과 총점이 출력됩니다.

 


지금까지 예시를 통하여 자바(JAVA)의 참조 자료형을 구현해 보고 정의해 보았습니다.

읽어주셔서, 감사합니다.