"객체 초기화에 대해 말씀드리고 싶습니다. 객체를 생성할 때 제대로 작동하는 데 필요한 정보가 없는 객체에 액세스하는 상황을 피하기 위해 객체를 변수에 초기 값을 할당해야 합니다 ."

"파일 개체를 생각해 봅시다. 파일에 필요한 최소한의 정보는 이름입니다. 이름 없는 파일을 만드는 것은 어리석은 일입니다. "

"파일 작업을 위해 MyFile 클래스를 작성한다고 가정합니다. 각 개체에 필요한 정보는 무엇입니까?"

"개체와 관련된 파일 이름?"

"그렇습니다. 이렇게 하려면 초기화 () 메서드를 클래스에 추가합니다. 이렇게 생겼습니다."

예:
class MyFile
{
    private String filename = null;

    public void initialize(String name)
    {
        this.filename = name;
    }
…
}

"메소드를 호출하여 객체로 작업할 수 있도록 초기화 메소드를 추가했습니다 . 초기화 메소드를 호출한 직후에 객체의 메소드를 호출할 수 있습니다. 객체로 작업할 수 없으면 무효라고 합니다 . 그렇지 않으면 개체가 유효 하다고 말합니다 . 초기화 메서드의 주요 작업은 개체가 개체를 유효하게 만드는 데 필요한 모든 데이터를 받는 것입니다. "

"알겠어요."

"이제 우리 작업을 더 어렵게 만들어 봅시다. 또는 다시 생각해 보면 더 쉽습니다. 어떻게 보느냐에 따라 다릅니다. 우리 클래스를 사용하는 프로그래머가 전체 경로 대신 파일의 디렉토리와 짧은 이름만 전달하는 것이 더 편리하다고 생각한다고 가정해 보겠습니다. 프로그래머가 이 작업을 수행할 수 있도록 다른 초기화 메서드( Java를 사용하면 동일한 이름을 가진 여러 메서드를 생성할 수 있음 ) 를 만들 수 있습니다 . 클래스는 다음과 같습니다."

두 가지 초기화 방법이 있는 예 :
class MyFile
{
    private String filename = null;
    public void initialize(String name)
    {
        this.filename = name;
    }

    public void initialize(String folder, String name)
    {
        this.filename = folder + name;
    }

…
}

"한 가지 더: 현재 파일 옆에 파일의 임시 복사본을 만들어야 하는 경우가 많습니다."

"이 작업을 수행하는 방법을 만들 수 있습니까?"

"그래. 봐봐."

현재 파일 옆에 복사본을 만듭니다.
class MyFile
{
    private String filename = null;
    public void initialize(String name)
    {
        this.filename = name;
    }

    public void initialize(String folder, String name)
    {
        this.filename = folder + name;
    }

   // The filename will be stored in the same directory as file. 
    public void initialize(MyFile file, String name) 
    {       
        this.filename = file.getFolder() + name;
    }

…
}

"그리고 내가 원하는 만큼 이러한 방법을 만들 수 있습니까?"

"글쎄, 이유가 있는 한. 하지만 엄밀히 말하면 네, 원하는 만큼."

"언제 초기화 메서드를 호출해야 하나요?"

"개체를 만든 직후에 유효하게 만듭니다."

예:
MyFile file = new MyFile();
file.initialize("c:\data\a.txt");

String text = file.readText();
MyFile file = new MyFile();
file.initialize("c:\data\", "a.txt");

String text = file.readText();
MyFile file = new MyFile();
file.initialize("c:\data\a.txt");

MyFile file2 = new MyFile();
file2.initialize("a.txt");

String text = file2.readText();

"이 getFolder() 메서드는 무엇입니까?"

"실제로 여기에 코드를 표시하지 않았습니다. 파일이 저장된 폴더의 이름과 함께 문자열을 반환하는 메서드를 나타냅니다."