1 minute read


Untitled

참조 자료형 변수

참조 자료형

  • 변수의 자료형

Untitled

  • 클래스형으로 변수를 선언
  • 기본 자료형은 사용하는 메모리의 크기가 정해져 있지만, 참조 자료형은 클래스에 따라 다름
  • 참조 자료형을 사용 할때는 해당 변수에 대해 생성하여야 함 (String 클래스는 예외적으로 생성하지 않고 사용할 수 있음)


참조 자료형 정의하여 사용하기

  • 학생이 수강한 과목들에 대한 성적을 산출하기 위한 경우 학생 클래스 속성에 과목이 모두 있으면 불합리
  • 학생(Student)과 과목(Subject)에 대한 클래스를 분리하여 사용하고 Subject 클래스를 활용하여 수강한 과목들의 변수의 타입으로 선언

Untitled


  • 선언된 Subject 변수는 생성된 인스턴스가 아니므로, Student의 생성자에서 생성하여 사용

Student.java

package ch09;

public class Student {

	int studentId;
	String studentName;

	Subject korea;
	Subject math;

	public Student(int studentId, String studentName){
		this.studentId = studentId;
		this.studentName = studentName;

		korea = new Subject();
		math = new Subject();
	}
	public void setKoreaSuject(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 showScoreInfo() {
		int total = korea.score + math.score;
		System.out.println( studentName + "학생의 총점은 " + total + "점 입니다.");

	}
}


int와 String으로 멤버변수 선언을 했고, 만들어준 멤버변수를 this으로 가르키게 된다.
new Subject()를 사용하여 Subject 클래스의 인스턴스를 생성함으로써, 학생 객체에 과목 정보를 추가할 수 있는 구조를 만들어주었다.


Subject.java

package ch09;

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

}


StudentTest.java

package ch09;

public class SubjectTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student studentLee = new Student(100,"Lee");

		studentLee.setKoreaSuject("국어 ", 100);
		studentLee.setMathSubject("수학", 99);

		Student studentKim = new Student(200,"Kim");

		studentKim.setKoreaSuject("국어 ", 89);
		studentKim.setMathSubject("수학", 93);

		Student studentPark = new Student(300,"Park");

		studentPark.setKoreaSuject("국어 ", 84);
		studentPark.setMathSubject("수학", 66);

		studentLee.showScoreInfo();
		studentKim.showScoreInfo();
		studentPark.showScoreInfo();
	}
}

스크린샷 2023-05-21 오후 7.30.27.png

Leave a comment