33 lines (30 sloc) 1015 Bytes
package common.java.constructor; | |
/* | |
* 생성자란 ? | |
* | |
* 생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다. 따라서 인스턴스 변수의 초기화 작업에 주로 사용되며, | |
* 인스턴스 생성시에 실행되어야 할 작업을 위해서도 사용된다. | |
* - 인스턴스 초기화란, 인스턴스변수들을 초기화 하는것을 뜻한다. | |
* | |
* 생성자의 조건 | |
* 1. 생성자의 이름은 클래스의 이름과 같아야 한다. | |
* 2. 생성자는 리턴값이 없다. | |
* | |
* ※ 연산자 new 가 인스턴스를 생성하는 것이지 생성자가 인스턴스를 생성하는 것이 아니다. | |
* | |
* Card c = new Card(); | |
* 1. 연산자 new 에 의해서 메모리(heap)에 Card클래스의 인스턴스가 생성된다. | |
* 2. 생성자 Card()가 호출되어 수행된다. | |
* 3. 연산자 new의 결과로, 생성된 Card인스턴스의 주소가 반환되어 참조변수 c에 저장된다. | |
* | |
* 기본생성자가 컴파일러에 의해서 추가되는 경우는 클래스에 정의된 생성자가 하나도 없을 때 뿐이다. | |
* | |
* */ | |
public class StudyConstructor { | |
StudyConstructor(){ | |
// 매개변수가 없는 생성자 | |
} | |
StudyConstructor(String k ){ | |
// 매개변수가 있는 생성자 | |
} | |
} |
생성자의 접근제어자 ( Singleton 구현 )
34 lines (31 sloc) 1.7 KB
package common.fundament.constructor; | |
/* | |
* ■ 생성자의 접근 제어자 | |
* 생성자에 접근 제어자를 사용함으로써 인스턴스의 생성을 제한할 수 있다. 보통 생성자의 | |
* 접근제어자는 클래스의 접근 제어자와 같지만, 다르게 지정할 수도 있다. | |
* 생성자의 접근제어자를 private으로 지정하면, 외부에서 생성자에 접근할 수 없으므로 | |
* 인스턴스를 생성할 수 없게 된다. 그래도 클래스 내부에서는 인스턴스의 생성이 가능하다. | |
* | |
* */ | |
public class PrivateConstructor { | |
private static PrivateConstructor s = new PrivateConstructor(); | |
/* getInstance()에서 사용될 수 있도록 인스턴스가 미리 생성되어야 하므로 static이어야 한다. | |
* */ | |
private PrivateConstructor(){ // 싱글톤 ( Singleton ) | |
} | |
public static PrivateConstructor getInstance(){ | |
// 단 하나의 객체만 생성될 수 있도록 한다. | |
return s; | |
} | |
/* | |
* 생성자를 통해 직접 인스턴스를 생성하지 못하게 하고 public 메서드를 통해 인스턴스에 접근하게 | |
* 함으로써 사용할 수 있는 인스턴스의 개수를 제한 가능 | |
* 예제는 Singleton 을 구현 | |
* | |
* 생성자가 private인 클래스는 다른 클래스의 조상이 될 수 없다. 왜냐하면, 자손클래스의 인스턴스를 | |
* 생성할때 조상클래스의 생성자를 호출해야만 하는데, 생성자의 접근제어자가 private이므로 | |
* 자손클래스에서 호출하는것이 불가능하기 때문이다. | |
* | |
* 그래서 클래스앞에 final을 더 추가하여 상속할 수 없는 클래스라는 것을 알리는 것이 좋다. | |
* */ | |
} |
댓글 없음:
댓글 쓰기