본문 바로가기
Java/Java

[Java] 클래스(Class)와 인스턴스, 참조 변수(Reference Variable)

by 기록하는_사람 2022. 10. 13.

클래스(Class)

📌 클래스(Class)

: 데이터(Data) + 메소드(Method)

  데이터(Data) : 프로그램 상 유지, 관리해야 하는 데이터.

  메소드(Method) : 데이터를 처리, 조작하는 기능.

 

📌 보통 자바에서는 클래스 이름을 설정할 때, 첫 문자는 대문자로 시작함.

      둘 이상의 단어를 사용할 때는 대문자로 구분지어 사용함.

 

📌 참조 자료형(reference data type)

: 클래스 형으로 선언하는 자료형.

  예. String 등

 

인스턴스

📌 인스턴스

: 클래스에 정의죈 변수와 메소드를 담고 있는 것.

  만들어지고 실제 메모리 공간에 존재함.

  == 객체

 

📌 인스턴스 변수

: 클래스 내에 선언된 변수.

  == 멤버 변수 == 필드(Fields)

 

📌 인스턴스 메소드

: 클래스 내에 정의된 메소드. 

 

📌 인스턴스 변수는 같은 클래스 내에 위치한 메소드 내에서 접근이 가능함. 

 

참조 변수(Reference Variable)

📌 참조 변수(Reference Variable)

: 인스턴스를 참조할 수 있는(가리키고 있는) 것.

 

📌 new

: 새로 생성되는 인스턴스(객체)를 생성해, 생성된 인스턴스의 주솟값을 반환함. 

  참조 변수에 새로 생성된 인스턴스(객체)의 주솟값이 저장됨.

 

📌 참조 변수는 참조하는 인스턴스(객체)를 바꿀 수 있음.

 

📌 참조 변수에 null을 대입해 참조하는 인스턴스(객체)와의 관계를 끊을 수 있음. 

 

예시

📄 Student 클래스 생성

package test;

class Student {
	// 인스턴스(객체) 변수
	int id;
	String name;
	int birth;
	String phoneNumber;
	
	// 디폴트 생성자
	public Student() {}
	
	// 생성자
	public Student(int s_id, String s_name, int s_birth, String s_phoneNumber) {  
		id = s_id;
		name = s_name;
		birth = s_birth;
		phoneNumber = s_phoneNumber;
	}
	
	// 인스턴스(객체) 메소드
	public void printInfo() {
		System.out.println(id + " " + name + " " + birth + " " + phoneNumber);
	}
}

public class Test {
	public static void main(String[] args) {
		// 참조 변수 선언하고 새로운 인스턴스(객체) 생성.
		Student jin = new Student(1, "jin", 19921204, "010-1234-5678");  
		Student jimin = new Student(2, "jimin", 19951013, "010-9876-5432");
		Student jun = new Student(3, "jun", 19960610, "010-5555-1111");
		
		jin.printInfo();  // 1 jin 19921204 010-1234-5678
		jimin.printInfo();  // 2 jimin 19951013 010-9876-5432
		jun.printInfo();  // 3 jun 19960610 010-5555-1111
		
		jun = jimin;  // 참조 변수는 참조하는 인스턴스(객체)를 바꿀 수 있음. 
		jun.name = "jun";
		jun.printInfo();  // 2 jun 19951013 010-9876-5432
	}

}

 

💡 생성자와 디폴트 생성자

https://codingrecord2209.tistory.com/177

 

[Java] 생성자와 디폴트 생성자

생성자 📌생성자(Constructor) : 인스턴스(객체) 생성 시 자동으로 호출되는 메소드. 📌 생성자의 이름은 클래스 이름과 동일해야 함. 📌 생성자는 값을 반환하지 않고, 반환형을 표시하지 않음.

codingrecord2209.tistory.com

 

댓글