new
코드 워드를 통해 개체를 인스턴스화하면 힙 (개체 및 필드를 저장하는 데 사용되는 시스템 메모리 부분)의 공간이 할당되고 생성자가 실행됩니다. 이 경우 생성자는 표준 출력에 쓰고 객체에 대한 참조가 만들어 지는지 여부에 관계없이 실행됩니다.
그 후에, 당신 말이 맞습니다. 개체에 대한 참조가 없으므로 개체에 액세스 할 수 없습니다. 따라서 가비지 수집기는 결국 메모리 공간을 할당 해제합니다.
아담이 말했듯이, 이것은 일반적으로 생성자가 객체를 초기화해야한다는 기대를 망쳐 놓기 때문에 일반적으로 권장하지 않으며 외부 세계와의 상호 작용은 해당 메소드를 통해 가능해야합니다. 그것은 조금 더하더라도 그래서
, 잘 구조화 된 코드는 예를 들어 다음과 같이 수 :
class TestCode {
public TestCode() {}
public void welcome() {
System.out.println();
System.out.println("Welcome to the Program");
}
public static void main(String args[]){
TestCode tc = new TestCode();
tc.welcome();
}
}
P.S. 물론 모든 인스턴스 인스턴스에 대해 인스턴스 외부에서 작업을 수행하려는 경우가 있습니다. 예를 들어 클래스의 모든 인스턴스에 대한 정적 목록을 유지하는 것과 같이 인스턴스가 생성 될 때마다 특정 인스턴스를 추가하는 경우와 같은 경우가 있습니다. 그럼에도 불구하고 개인 init() 메소드를 생성하고 생성자에서 호출하여 다른 기능을 가진 요소를 더 잘 분리하는 것이 가장 좋습니다.
class TestCode {
public TestCode() {
init();
}
private void init() {
System.out.println();
System.out.println("Welcome to the Program");
}
public static void main(String args[]){
TestCode tc = new TestCode();
// Or simply: new TestCode();
}
}
https://stackoverflow.com/questions/46396647/what-is-calling-class-method- : 또 다른 예로서
는 여기에 코드가 공식화 될 수있는 다른, 기능적으로 동일 방법입니다 on-constructor –
* 어떻게 참조 할 수 있습니까? * 할 수는 없습니다. 그것이 바로 변수입니다. – shmosel
이것을 확인하십시오 https://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html –