[Java 객체지향] 참조 자료형 변수

2022. 1. 25. 17:55·Java & Kotlin

참조 자료형

  • 변수의 자료형에는 int, char 등과 같이 기본형 타입과 클래스를 정의하여 자료형으로 사용하는 참조 자료형이 있다. 
  • 기본형 타입은 선언 시 고정된 길이의 메모리가 주어지지만, 참조 자료형은 정의된 클래스에 따라 가변 길이의 메모리 공간을 가진다. 
  • 참조 자료형 변수를 선언하면 변수에 대한 메모리 공간이 주어진다.
  • 선언한 후에는 변수에 대해 생성 해주어야 한다. ( String 클래스는 예외 )
  • 변수에 대한 생성은 대부분 생성자 내부에서 한다.

 

클래스 생성 시 유의할 점

학생의 정보와 학생이 수강한 과목에 대한 정보를 나타내고 싶다고 할때,

 

학생 클래스에 학생의 정보와 수강한 과목 정보를 모두 구현한다. (X)

→ 학생마다 수강하는 과목 수, 종류 등이 다 다를 수 있어 수강할 수 있는 과목에 대한 property를 모두 정의해야 한다.

 

학생 클래스와 과목 클래스를 따로 구현하여 상호 작용하도록 한다. (O) 

→ 학생마다 수강하는 과목만 참조형 변수로 추가해주면 된다.

 

 

아직 잘 와닿지 않는다ㅜ.ㅜ


Subject.java

과목에 대한 속성만을 가지고 있는 클래스

package ch09;

public class Subject {
	
	String subjectName;
	int score;
	int subjectId;

}

 

Student.java

학생의 정보와 수강하는 과목을 속성으로 가지는 클래스

package ch09;

public class Student {
	
	int studentId;
	String studentName;
	
	Subject korean;	// Subject 객체 선언만 했을 뿐 생성은 되지 않음
	Subject math;
	
	Student(int studentId, String studentName) {
		this.studentId = studentId;
		this.studentName = studentName;
		
		korean = new Subject();	// 생성자에서 참조 자료형으로 멤버 변수를 사용하는 경우가 많음
		math = new Subject();
	}
	
	public void setKoreanSubject(String name, int score) {
		korean.subjectName = name;
		korean.score = score;
	}
	
	public void setMathSubject(String name, int score) {
		math.subjectName = name;
		math.score = score;
	}
	
	public void showScoreSum() {
		int scoreSum = math.score + korean.score; 
		System.out.println(studentName + " 학생의 점수 총 합은 " + scoreSum + "점 입니다.");
	}
}

 

SubjectTest.java
package ch09;

public class SubjectTest {
	public static void main(String[] args) {
		
		Student studentSue = new Student(12345,"Sue");
		studentSue.setKoreanSubject("국어", 96);
		studentSue.setMathSubject("수학", 89);
		studentSue.showScoreSum();
		
		Student studentKim = new Student(54321,"Kim");
		studentKim.setKoreanSubject("국어", 90);
		studentKim.setMathSubject("수학",88);
		studentKim.showScoreSum();
	}

}

 

수행 결과
Sue 학생의 점수 총 합은 185점 입니다.
Kim 학생의 점수 총 합은 178점 입니다.
저작자표시 비영리 변경금지 (새창열림)

'Java & Kotlin' 카테고리의 다른 글

[Java 객체지향] 접근 제어 지시자  (0) 2022.01.25
[Java 객체지향] 생성자  (0) 2022.01.25
[Java 객체지향] 인스턴스와 힙메모리  (0) 2022.01.24
'Java & Kotlin' 카테고리의 다른 글
  • [Java 객체지향] 캡슐화
  • [Java 객체지향] 접근 제어 지시자
  • [Java 객체지향] 생성자
  • [Java 객체지향] 인스턴스와 힙메모리
Sue
Sue
개발 공부 로그
  • Sue
    Sue's devlog
    Sue
  • 전체
    오늘
    어제
    • 분류 전체보기 (122)
      • Algorithm (2)
      • WEB (8)
      • Java & Kotlin (83)
      • Spring (26)
      • Database (1)
      • Infra (0)
      • Git (1)
      • devlog (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Sue
[Java 객체지향] 참조 자료형 변수
상단으로

티스토리툴바