반응형

제목:CMRS

생성자란

인스턴스가 생성될 떄 호출되는 '인스턴스 초기화 메서드'

 

인스턴스 초기화작업에 주로 사용

 

생성자 조건

1.생성자의 이름은 클래스의이름과 같아야 한다.

2.생성자는 리턴값이 없다.

 

변수 =new 이름();

1.연산자 new에 의해 메모리(heap)에 인스턴스 생성

2.생자가 클래스()가 호출되어 수행

3.연산자 new의 결과로 생성된 인스턴스 주소가 반환 변수에 저장

 

기본생성자

모든 클래스에는 반드시 하나 이사으이 생성자가 정의 되어 있어야 한다.

그러나 생성자를 정의 하지 않아도 인스턴스를 생성 할수 있었던 이유는 컴파일러가 '기본 생성자'덕분임

 

생성자를 내가 별도로 추가하면 그에 맞는 형식으로 불러와야한다.

 

기본생성자가 컴파일러에 의해 추가되는 경우는 클래스에 정의된 생성자가 없을경우에 한함

 



매개변수가 있는 생성자

 

명(){} 생성자

명(타입 변수명a,타입 변수명a){

인스턴스변수a=변수명a

인스턴스변수b=변수명b

}

 

 

생성자에서 다른 생성자 호출하기-this(),this

같은 클래스에서 멤버들 간에 서로 호출 한것처럼

생성자 간에도 서로 호출이 가능 조건을 만족시킬떄

-생성자의 이름으로 클래스이름 대신 this를 사용

-한 생성자에서 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출이 가능하다.

 

명(타입 변수명a,타입 변수명b){

this.인스턴스변수a=변수명a

this.인스턴스변수b=변수명b

}

 

this-인스턴스 자신을 가리키는 참조 변수,인스턴스 주소가 저장

모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재

this(),this(매개변수)-생성자,같은 클래스의 다른 생성자를 호출할때 사용

 

생성자를 이용한 인스턴스의 복사

인스턴스변수가 동일 할때 사용

 

명(같은상태 클래스명 z){

인스턴스변수a=z.인스턴스변수a

인스턴스변수b=z.인스턴스변수b //불러오는 클래스와 상태가 같아야 함 그래야 성립

}

 

복사를 하여서 별도의 인스턴스 이기 때문에 각기 값들은 별도로 사용가능하다는 장점이있음

 

인스턴스를 생성할 때는 다음의 2가지 사항을 결정해야함

1.클래스-어떤 클래스의 인스턴스를 생성?

2.생성자-선택한 클래스의 어떤생성자로 인스턴스를 생성할 것인가?

 

물론 생성자를 몰라도 프로그래밍이 가능하나 생성자를 적절히 활용하면 간결하고 직관적인 코드를 작성가능

반응형

'코딩 > Java' 카테고리의 다른 글

오버라이딩(overriding)  (0) 2016.03.16
상속(inheritance)  (0) 2016.03.16
변수의 초기화  (0) 2016.03.14
메서드 오버로딩(method overloading)  (0) 2016.03.14
객체지향,인스턴스,클래스,변수,메서드  (0) 2016.03.14

+ Recent posts