겉바속촉

클래스와 객체 - 인스턴스 본문

IT 일기 (상반기)/JAVA

클래스와 객체 - 인스턴스

겉바속촉 2022. 5. 27. 18:01
728x90
반응형

 

Class & Instance

 

 

                                  생성(인스턴스화)

클래스 (static 코드) --------------------------> 인스턴스 (dynamic memory)

 

 

클래스 생성

- new 예약어를 이용하여 클래스 생성

- 형식

  클래스형 변수이름 = new 생성자;

  Student studenA = new Student();

 

public class Student {

		int studentID;
		String studentName;
		int grade;
		String address;
		
		public void showStudentInfor(){
			System.out.println(studentName + "," + address );
		}
		
		public String getStudentName() {
			return studentName;
		}
		
		public void setStudentName(String name) {
			studentName = name;
		}
		
		public static void main(String[] args){
			
			Student studentLee = new Student();
			studentLee.studentName = "겉바속촉";
			studentLee.studentID = 100;
			studentLee.address = "서울시 영등포구 여의도동";			

			Student studentKim = new Student();
			studentKim.studentName = "겉촉속바";
			studentKim.studentID = 300;
			studentKim.address = "서울시 동작구 흑석동";
			
			studentLee.showStudentInfor();
			studentKim.showStudentInfor();
		}
	
}

결과

겉바속촉,서울시 영등포구 여의도동
겉촉속바,서울시 동작구 흑석동

 

 

이제는 다른 클래스에 있는 것 호출해보기

public class StudentTest {

	public static void main(String[] args) {

		Student studentLee = new Student();
		studentLee.studentName = "겉바속바";
		studentLee.studentID = 200;
		studentLee.address = "경기도 의왕시";			

		Student studentKim = new Student();
		studentKim.studentName = "겉촉속촉";
		studentKim.studentID = 400;
		studentKim.address = "경기도 김포시";
		
		studentLee.showStudentInfor();
		studentKim.showStudentInfor();
	}

}

 

그래서 결과는 다음과 같이 나옴

겉바속바,경기도 의왕시
겉촉속촉,경기도 김포시

 

 

 

 

인스턴스와 힙(heap) 메모리

 

- 하나의 클래스 코드로부터 여러개의 인스턴스를 생성

- 인스턴스는 힙(heap)메모리에 생성됨
   (힙메모리는 동적으로 생성되는 메모리, new라는 키워드로 생기며 자동 소멸이 되지 않음, 

    대신 가비지 컬렉터가 처리함.

    스택메모리는 함수가 호출되면 지역변수가 쌓이고, 함수가 끝나면 스택이 자연스럽게 소멸)

- 각각의 인스턴스는 다른 메모리에 다른 값을 가짐

- 하나의 인스턴스가 생성이 되는 경우 독립적인 메모리 공간이 Heap에 생성됨

 

 

 

참조 변수와 참조 값

- 참조변수 : 인스턴스 생성시 선언하는 변수

- 참조값 : 인스턴스가 생성되는 힙 메모리 주소

 

public static void main(String[] args) {

		Student studentLee = new Student();
		studentLee.studentName = "겉바속바";
		studentLee.studentID = 200;
		studentLee.address = "경기도 의왕시";			

		Student studentKim = new Student();
		studentKim.studentName = "겉촉속촉";
		studentKim.studentID = 400;
		studentKim.address = "경기도 김포시";
		
		studentLee.showStudentInfor();
		studentKim.showStudentInfor();
		
		System.out.println(studentLee);
		System.out.println(studentKim);
	}

결과

겉바속바,경기도 의왕시
겉촉속촉,경기도 김포시
classpart.Student@15db9742
classpart.Student@6d06d69c

 

@ 뒷부분이 바로 주소값

참조변수 : studentLee, studentKim

참조값 : 15db9742, 6d06d69c

 

 

 

생성자(Constructor)

특징

- 클래스 이름과 동일

- 반환 타입이 없음

- new 키워드에 의해서만 호출

- 인스턴스를 초기화할떄의 명령어 딥합

- 메소드가 아님

- 상속되지 않음

 

 

디폴트 생성자(Default Constructor)

특징

- 생성자가 하나도 없는 경우, 자바 컴파일러가 디폴트 생성자를 생성시켜준다.

- 대신 디폴트 생성자는 매개변수가 없는 것이 특징

- 생성자가 하나라도 있는 경우 디폴트 생성자는 서포트되지 않음 주의

- 하나의 클래스에는 반드시 적어도 하나 이상의 Constructor가 존재

 

 

 

 

728x90
반응형

'IT 일기 (상반기) > JAVA' 카테고리의 다른 글

프로세스와 스레드의 차이  (0) 2022.06.02
XML 파싱 - 마샬, 언마샬  (0) 2022.06.02
WEB 서버 & WAS  (0) 2022.05.27
클래스와 객체 - 메서드  (0) 2022.05.27
Servlet Container  (0) 2022.05.27