티스토리 뷰
Goal
- 참조 자료형을 이해한다
- 참조 자료형을 직접 생성하여 사용해본다.
1. 참조 자료형
- 변수의 자료형에는 기본 자료형과 객체로 이루어진 참조 자료형 2가지가 있음.
- 참조 자료형은 클래스형으로 변수를 선언함. ex) String name;
- 기본 자료형은 사용하는 메모리가 정해져 있지만, 참조 자료형은 클래스에 따라 다름.
2. 참조 자료형 구현
- 학생 클래스 (Student)에 있는 과목 이름, 과목 점수 속성을 과목 클래스(Subject)로 분리한다.
- 과목(Subject)클래스를 참조 자료형으로 학생(Student)클래스에 정의하여 사용함.
- 참조 자료형의 구현을 통해 각 클래스마다 하나의 속성을 정해서 분리함으로써(학생이면 학생클래스, 과목이면 과목클래스) 프로그램을 더 깔끔하게 작성할 수 있음.
예제 1) StudentTest.java
- Student 클래스와 Subject 클래스를 테스트 하기 위해 작성한 파일.
public class StudentTest {
public static void main(String[] args) {
Student studentLee = new Student(100, "Lee");
studentLee.setKoreaSubject("국어", 100);
studentLee.setMathSubject("수학", 95);
Student studentKim = new Student(101, "kim");
studentKim.setKoreaSubject("국어", 80);
studentKim.setMathSubject("수학", 95);
studentLee.showStudentScore();
studentKim.showStudentScore();
}
}
예제 2) Student.java
- 참조형 변수는 클래스 타입이므로 클래스의 기능들을 사용하기 위해 초기화(인스턴스화)를 해야 한다.
- 보통 참조형 변수를 사용하고자하는 클래스의 생성자에 초기화코드를 같이 작성한다. (Student 생성시 Subject 타입의 참조형 변수들도 같이 생성된다)
//Student와 관련된 맴버들을 Student 클래스에 정의
public class Student {
int studentID;
String studentName;
Subject korea; //참조 자료형 타입으로 변수를 선언. Subject 클래스가 참조 자료형 타입으로, Student의 맴버가 됨.
Subject math;
public Student(int id, String name) {
studentID = id;
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 + " 점 입니다. " );
}
}
예제 3) Subject 코드
//과목과 관련된 맴버들을 Subject에 정의
public class Subject {
String subjectName;
int score;
}
'Java > Java 올인원 패키지' 카테고리의 다른 글
6. This (Java) (0) | 2020.03.14 |
---|---|
5. 접근 제어자, 정보은닉 (Java) (0) | 2020.03.14 |
3. 생성자 (Java) (0) | 2020.03.14 |
2. 함수와 메서드 (0) | 2020.03.13 |
1. 클래스와 객체 (Java) (0) | 2020.03.13 |
댓글
최근에 올라온 글
최근에 달린 댓글
TAG
- 20201204
- 생활코딩리눅스
- 20200421
- 20200423
- 20200622
- 20200428
- 20200504
- 20200317
- chapter8
- 20200403
- 20200427
- 20200804
- 20200424
- likelion
- 20200413
- 20200319
- 20200425
- 20200406
- 20200503
- chapter7
- 20200624
- 20200510
- 백준
- 20200429
- 20200420
- 20200512
- 20200502
- 20200330
- 20200417
- 20200415
- Total
- Today
- Yesterday