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 에서 돌아가는지는 테스트 안해봤지만 아마 되지 않을까? 싶다.
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 |