본문 바로가기

JAVA

[JAVA] 기초문법 - 클래스와 객체1(3)

클래스와 인스턴스

클래스(static코드)ㅡ(생성(인스턴스화))ㅡ>인스턴스(dynamic memory)

클래스 생성하기

클래스를 사용하기 위해서는 클래스를 생성하여야 함

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

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

Student studentA=new Stuendt();//하나의 객체 생성

Student studentB=new Stuendt();//두번쨰 객체 생성

studentA,studentB는 참조변수라 한다.(참조형 데이터 타입)

int i =10; //기본데이터 타입

참조형 데이터 타입은 반드시 생성해서 사용해야한다.

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

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

인스턴스는 힙(heap) 메모리에 생성됨.

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

스텍ㅡ함수 호출 될떄, 지역변수들의 메모리 영역(블록({})안에 선언된 변수들),참조변수 저장

힙ㅡ인스턴스안에 변수들 저장

참조변수들이 heap에 있는 인스턴스 주소를 가지고 있음. 참조변수 이름을 print하면 주소값이 나옴.

heap 메모리는 가비지컬렉터에 의해 자동으로 삭제(사용하지 않을때)

용어 정리

생성자(constructor)

인스턴스 생성 시 new 키워드와 함께 사용했던 생성자

클래스 안에 생성자를 정의해야하지만 생성자가 없으면 jvm이 기본 생성자(디폴트 생성자)를 넣어준다. 생성자가 있으면 자동생성 하지 않음.

생성자 이름은 클래스 이름과 같아야함.

생성자는 객체를 생성할때 무조건 한번 실행됨.

생성자 선언법

생성자를 만들면, 객체를 생성할때 생성자 형식에 맞게 매개변수로 전달 해야함.

디폴트 생성자 public 클래스이름(){} 을 선언하면 매개변수로 전달하지 않아도 된다.

동일한 이름을 가진 여러개의 생성자를 선언 가능하지만, 매개변수는 달라야한다.ㅡ> 생성자 오버로딩

생성자는 new키워드에 의해서만 호출된다.

생성자는 메소드가 아니며 상속되지 않고, 리턴값이 없다.

디폴트 생성자는 매개변수와 구현부가 존재하지 않는다. 프로그래머가 생성자를 정의하지 않으면 자동으로 생성된다.

생성자 오버로드

필요에 의해 생성자 추가 하는 경우 여러 개의 생성자가 하나의 클래스에 있을 수 있다.