2017년 6월 5일 월요일

생성자 ( constructor )

생성자 깃허브 링크

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을 더 추가하여 상속할 수 없는 클래스라는 것을 알리는 것이 좋다.
* */
}

댓글 없음:

댓글 쓰기

JavaScript_함수의 역할

◎ 자바스크립트 함수의 역할 ■ 자바스크립트 함수와 메서드는 전혀 다른 개념이다. - 자바스크립트 함수는 메서드 역할을 할 수 있지만, 객체지향 프로그래밍의 메서드는 자바스크립트의 함수 역할을 할 수 없다. - 메서드와는 다르게 ...