PLOD

[Java] 참조 자료형 본문

개발 공부/Java

[Java] 참조 자료형

훌룽이 2022. 11. 8. 17:27

참조형은 실제 사용하는 값을 변수에 담는 것이 아니라 이름 그대로 실제 객체의 위치를 저장한다. 

참조 자료형은 열거, 클래스, 인터페이스 , 배열이 있다. 

참조자료형은 위에서 보이는 것처럼 java에서 제공되는 기본자료형이 아니라 직접 클래스형으로 변수를 선언

하는 것이다. 그래서 참조값을 그대로 사용할 수 없기 때문에 참조 값에서 가르키는 주소 값으로 가야 개발자가 찾는(or 지정한) 값이 있다.

기본 자료형은 사용하는 메모리의 크기가 정해져(ex) int : 4byte, double : 8 byte) 있지만, 참조 자료형은 클래스에 따라 다르다. 

참조자료형은 참조한 클래스의 멤버변수와 , 매개변수, 지역변수를 Object 형태로 사용할 수 있다. 

Example 1) 사과의 개수를 클래스 형태로 받아 바나나의 개수와 함께 출력하는 프로그램

Apple 클래스

public class Apple {				
	private int appleNumber;
	private int appleStack;

	public Apple(int appleNumber, int appleStack) {
		this.appleNumber = appleNumber;
		this.appleStack = appleStack;
	}
	
	public int getData() {
		return appleNumber + appleStack;
	}
	
}

 Banana 클래스

public class Banana {
	private Apple apple;			// 변수, 함수, 생성자를 참조 할 수 있다
	private int bananaNum;

	public Banana(Apple apple, int bananaNum) {
		this.apple = apple;
		this.bananaNum = bananaNum;						
	}
	
	
	
	public int total() {
		return apple.getData() + bananaNum; 
	}
	
	
	public void disp() {
		System.out.println("사과의 개수 : " + apple.getData());
		System.out.println("바나나의 개수 : " + bananaNum);
		System.out.println("총 과일의 개수 : " + total());
	}
}

FruitTest 클래스

public class FruitTest {
	public static void main(String[] args) {
		Apple apple = new Apple(10,20);
		
		Banana banana =  new Banana(apple, 50);
		banana.total();
		banana.disp();
		
	}
}

Example 2)  학생이 수강한 과목들에 대한 성적을 산출하기 위한 program

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

Subject class는 과목코드와 점수, 과목이름을 설정하였다 여기서 중요한 것은 참조 자료형은 자료형이 public 이어야 한다는 것이다.

student class는 학생의 이름과 학번 데이터를 담고 있다 student 생성자가 호출될 때 국어와 수학에 해당하는 과목 class도 참조 자료형으로 호출 되도록 하였다.

 

 

Comments