2016-06-08 2 views
-3

클래스의 메서드 내에서 개체를 인스턴스화하려고하므로 클래스의 어느 위치에서나 사용할 수 있습니다. 파이썬 배경에서 왔는데 아주 쉽습니다. 인스턴스화 된 객체를 아래의 "자체"인스턴스에 전달하면됩니다.메서드 내에서 public object 인스턴스화

self.camera = CameraInstance() 

어떻게 이것을 Java에서합니까? 나는 아래와 같은 것을 시도했지만 그것을 좋아하지 않는다.

private void init_camera_settings() { 
    public CameraInterface camera; 
    camera.TakePhoto() 
} 

private void someotherMethod() { 
    camera.TakePhoto() 
} 

두 가지 방법 모두 동일한 클래스입니다. 그 이유는 특정 시나리오에서만 카메라 객체를 인스턴스화하기 때문입니다.

감사합니다.

class Foo { 

    private CameraInstance camera; 

    public Foo() { 
     this.camera = new CameraInstance(); 
    } 

    // use "this.camera" in methods. 
} 
+0

https://docs.oracle.com/javase/tutorial/java/javaOO/index.html –

+0

@HarshPoddar 멤버 변수가 전역 변수가 아닙니다을 만들 new를 사용합니다. Java에는 전역 변수와 같은 것이 없습니다. –

+0

'init_camera_settings'에서'TakePhoto'를 호출하는 대신 변수를 초기화하겠습니까? –

답변

1

다른 방법으로 변수 class 전체를 사용하려면 변수에 클래스 범위가 있어야합니다. 당신은 일반적으로 새로운 객체

public MyClass { 

    public CameraInterface camera = new Camera(); 


private void init_camera_settings() { 
    camera.TakePhoto() 
} 

private void someotherMethod() { 
    camera.TakePhoto() 
} 
} 
+0

본인은 관례에 위배되는 방법 이름이 질문자로부터 왔음을 이해합니다. 하지만 여전히 ... 지적 가치가 있습니다. – GhostCat

+0

감사합니다. 감사합니다. – Sam

0
self.camera = CameraInstance() 

은 동일합니다. 자바에서는 유형이 필드를 갖거나 가지지 않습니다. 같은 클래스의 모든 인스턴스에는 같은 필드 세트가 있습니다.

하지만 당신은 (하지 않는 방법) 분야를 선언 만하는 방법에에 을 할당에 결정할 수 있습니다 :이 경우,

// Note: avoid public fields 
public CameraInterface camera; 

private void initCameraSettings() { 
    camera = new Camera(); 
} 

private void someotherMethod() { 
    camera.takePhoto(); 
} 

은 (필드에 기본 값을 갖게됩니다 null, 다른 값을 지정할 때까지)

제쳐두고 나는 공개 입력란에 대해 조언합니다. 나는 모든 필드를 비공개로 만들고 필요한 경우 액세스를 허용하는 속성을 추가합니다. 나중에 구현 세부 사항을 변경할 수 있습니다. 이것에 대한 한가지 예외는 기본적으로 상수를위한 불변 타입의 필드 인 public static final입니다. 그러나 심지어 조심해야합니다.

3

당신은 방법 내부 필드를 선언 할 수 없습니다에

+0

때로는 공개 최종 정적 필드의 필요성을 추가 할 수도 있습니다. – GhostCat

+0

... 메서드에서 값을 할당하는 것입니다. - 반드시이 private CameraInterface camera = new Camera();를 의미하지는 마십시오. –

+0

@ScaryWombat : 아니요. 나는 약간의 말씨를 분명히했다. –

관련 문제