2014-07-15 4 views
0

자바 인스턴스 (비 정적) 메서드는 객체에서 작동하고 비 정적 메서드를 호출하려면 인스턴스에 대한 참조가 필요하다고 들었습니다. 하지만이 Java (Android) 코드에서 정적이 아닌 메소드는 onCreate() 메소드 내부에 객체를 만들지 않고 호출되며 오류는 발생하지 않습니다. 왜 그런지 궁금해? 자바onCreate() 내에서 객체를 만들지 않고 비 정적 메서드 호출 호출

+1

활동은 시스템에 의해 인스턴스화됩니다. 따라서'onCreate()'메쏘드 안에있을 때, 당신의 액티비티의 인스턴스가 이미 생성되었습니다. 'newGame()'에 대한 호출은'this.newGame()'으로 쓰여질 수 있습니다. 여기서'this'는 현재 클래스의 인스턴스를 가리 킵니다.'this'는 필요하지 않으면 종종 생략됩니다. –

답변

1

메소드 newGame은() 클래스/활동 이름 MainActivity의 멤버 메소드이기 때문입니다 내 낮은 지식에 대한 유감

public class MainActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    newGame(); 


} 


private void newGame(){ 

    // code here 

} 

} 

. OOP 개념에 따르면 동일한 클래스의 멤버 메서드를 호출하는 경우 클래스 개체가 필요하지 않습니다. 그것은 멤버 변수와 같습니다. 그것이 당신이 원하는 것입니다.

0

인스턴스가 있습니다. MainActivity에는 기본 오브젝트가 포함되어 있지 않기 때문에 Java 오브젝트는 생성자로 생성됩니다. 모양은 다음과 같습니다.

public MainActivity() { 
    super(); 
} 

그런 다음 해당 인스턴스에서 onCreate()이 호출됩니다.