클래스형으로 변수를 선언한다.
기본 자료형은 사용하는 메모리의 크기가 정해져 있지만, 참조 자료형은 클래스에 따라 다르다.
참조 자료형을 사용할 때는 해당 변수에 대해 생성해야 한다. (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 |