겉바속촉
클래스와 객체 - 인스턴스 본문
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가 존재
'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 |