본문 바로가기

Android

interface

cpp 에서 자주 사용하던 interface 를 java 에서도 사용하기 위해서 잠시 조사하여 사용법을 파악...

Base Class & Interface
[code]
public class MyClass {
    public interface IMyInterface() {
        public void callInterface();
    }

    private IMyInterface listener = null;

    public MyClass() {
    }

    public process() {
        callInterface();
    }

    public setListener(IMyInterface listener) {
        this.listener = listener;
    }

    public callInterface() {
        if (listener != null) {
            listener.callInterface();
        }
    }
}
[/code]
Use class
[code]
public class UseClass() {

    public UseClass() {
        MyClass obj = new MyClass();
        obj.setListener(new Myclass.IMyInterface() {
            public void callInterface() {
                Toast.makeText(UseClass.this, "Hello Interface", 2);
            }
        });
    }
}
[/code]
C++ 와 JAVA 에서의 다른 점은 C++ 의 경우 Inteface 를 class 에 다중 상속하여 setListener 를 호출 할 때 this를 넘기는데 반해 JAVA 는 해당 Interface를 new 로 생성하면서 동시에 Method 도 같이 구현해 넘긴 다는 점

개인적으로는 JAVA 쪽이 가독성이 더 높은 듯... C++ 의 경우 초급자는 코드 자체를 이해 못하는 사람들이 많더라는...    

PS. C++ 였다면 다음과 같은 구조였을 거란 이야기 이다.
Use class
[code]
public class UseClass() implements MyClass.IMyInterface {

    public UseClass() {
        MyClass obj = new MyClass();
        obj.setListener(this);
    }

    public void callInterface() {
        Toast.makeText(this, "Hello Interface", 2);
    }
}
[/code]
이 구조가 JAVA 에서 돌아가는지는 테스트 안해봤지만 아마 되지 않을까? 싶다.

'Android' 카테고리의 다른 글

widget app 요소  (0) 2013.10.08
How to make a simple Android widget  (0) 2013.10.08
android widget  (0) 2013.10.08
Android R Drawables (system icon)  (0) 2013.10.08
get locale info  (0) 2013.10.08