마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

[Android 첫걸음] Java 구문에 대해 질문 드립니다

0 추천

안녕하세요?

방금 가입해서 인사드립니다

System S/W, F/W만 경험하다가 Android APP 과제를 시작해보려고 준비중입니다

기존의 C에서는 못보던 syntax가 있어서 부끄럽지만 질문 드립니다

 

Android Studio에서 Sample project를 받아서 code를 보던중

code중에 아래와 같은 구문이 있던데

C, C++ 만 접해봤던 초보에게는 생소한 구문이 있어서 질문 드립니다

 

// Code to manage Service lifecycle.
private final ServiceConnection mServiceConnection = new
 ServiceConnection() {

    @Override
    public void onServiceConnected(ComponentName componentName, IBinder service) {
        mBluetoothLeService = ((BluetoothLeService.LocalBinder) service).getService();
        if (!mBluetoothLeService.initialize()) {
            Log.e(TAG, "Unable to initialize Bluetooth");
            finish();
        }
        // Automatically connects to the device upon successful start-up initialization.
        mBluetoothLeService.connect(mDeviceAddress);
    }

    @Override
    public void onServiceDisconnected(ComponentName componentName) {
        mBluetoothLeService = null;
    }
};

new ServiceConnection()으로 ServiceConnection object를  생성해서 reference에 배치하려면

 private final ServiceConnection mServiceConnection = new ServiceConnection() ;

와 같이 semicolon ;로 끝나야 되는거 아닌가요?

 

뒤에 붙은 brace내의 내용이 무엇인지요?

C, C++에서는 이런건 syntax error  아닌가요?

 

저런 구문은 처음 보는 거라 고수님들이 가르침을 기다립니다

감사합니다

익명사용자 님이 2016년 9월 7일 질문
인터페이스나 추상클래스를 구현한 다음 이 클래스 사용하는게 때로는 불편할 때가 있습니다. 예를 들면 뷰의 클릭이벤트리스너 같은 경우는 엄청 자주 쓰이는데 이걸 뷰마다 클래스를 구현해서 쓴 다음 엄청난 수고가 들어가고 소스코드 금새 늘어나서 관리가 힘들겁니다.

1개의 답변

0 추천
@Override 로 내부 멤버 메소드를 재 구현 한 겁니다.

C++을 기준으로 한다면,

class ServiceConnection {

virtual public void onServiceConnected(ComponentName componentName, IBinder service);

virtual public void onServiceDisconnected(ComponentName componentName);

}

와 같이 된 class를 상속받은 클래스를 new 하면서 virtual 함수를 동시에 구현 해 준 것이라고 생각하시면 될 듯 합니다.
익명사용자 님이 2016년 9월 7일 답변
2016년 9월 7일 수정
...