본문 바로가기

프로그래밍/Java

Java_참조자료형 변수

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

참조 자료형 정의하여 사용하기 (포함 관계)

: 포함관계란 한 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언하는 것을 뜻한다.

Subject 클래스 멤버변수 선언

1
2
3
4
5
public class Subject {
    String subjectName;
    int score;
    int subjectID;
}
cs



Student 클래스 구현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class Student {
    
    int studentID;
    String studentName;
    
    Subject korea;
    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 showStudentSocre() {
        int total = korea.score + math.score;
        System.out.println(studentName +  " 학생의 총점은 " + total + "점 입니다." );
        
    }
}
cs

→ Subject korea, Subject math로 Subject 클래스의 멤버변수로 Student 클래스에 참조변수를 선언하고,
생성자에서 new 연산자를 사용하여 메모리에 올려줌. (객체를 생성함.)
→ setKoreaSubject 메서드와 setMathSubject 메서드를 이용해 매개변수를 받아 선언해준 korea와 math를 '. 연산자'를 이용해 접근한다.


StudentTest main함수로 실행

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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("수학"99);
        
        studentLee.showStudentSocre();
        studentKim.showStudentSocre();
    }
 
}
 
결과 화면
Lee 학생의 총점은 195점 입니다.
Kim 학생의 총점은 179점 입니다.
cs

→ Student 객체를 생성해서 매개변수를 넣고 값을 할당해 주고 showStudentScore()를 호출하면 다음과 같은 결과가 나온다.

 

 

- NullPointerException 만나는 이유

1. new 연산자를 쓰지 않음.
2. .연산자를 잘못 쓰거나 쓰지 않음.

'프로그래밍 > Java' 카테고리의 다른 글

Java_this 사용법  (0) 2023.02.10
Java_접근 제어 지시자와 캡슐화  (0) 2023.02.09
Java_생성자  (0) 2023.02.07
Java_함수(function)  (0) 2023.02.06
인스턴스 생성과 힙 메모리  (0) 2023.02.06