익명 클래스는 "확장"또는 "구현"을 어떻게 사용할 수 있습니까?
익명의 클래스는 어떻게 수퍼 클래스를 확장하거나 인터페이스를 구현할 수 있습니까?
익명 클래스 는 다른 Java 클래스와 마찬가지로 확장하거나 구현 해야합니다java.lang.Object
.
예를 들면 :
Runnable r = new Runnable() {
public void run() { ... }
};
여기에 r
를 구현하는 익명 클래스의 객체가 Runnable
있습니다.
익명 클래스는 동일한 구문을 사용하여 다른 클래스를 확장 할 수 있습니다.
SomeClass x = new SomeClass() {
...
};
할 수없는 것은 둘 이상의 인터페이스를 구현하는 것입니다. 그렇게하려면 명명 된 클래스가 필요합니다. 그러나 익명 내부 클래스 나 명명 된 클래스는 둘 이상의 클래스를 확장 할 수 없습니다.
익명 클래스는 일반적으로 인터페이스를 구현합니다.
new Runnable() { // implements Runnable!
public void run() {}
}
JFrame.addWindowListener( new WindowAdapter() { // extends class
} );
2 개 이상의 인터페이스를 구현할 수 있는지 여부를 의미한다면 불가능하다고 생각합니다. 그런 다음 두 가지를 결합하는 개인 인터페이스를 만들 수 있습니다. 익명의 클래스가 왜 그것을 원하는지 쉽게 상상할 수는 없지만 :
public class MyClass {
private interface MyInterface extends Runnable, WindowListener {
}
Runnable r = new MyInterface() {
// your anonymous class which implements 2 interaces
}
}
익명 클래스는 항상 슈퍼 클래스 를 확장하거나 인터페이스를 구현합니다. 예를 들면 :
button.addActionListener(new ActionListener(){ // ActionListener is an interface
public void actionPerformed(ActionEvent e){
}
});
또한 익명 클래스는 여러 인터페이스를 구현할 수 없지만 다른 인터페이스를 확장하는 인터페이스를 만들고 익명 클래스가이를 구현하도록 할 수 있습니다.
// The interface
interface Blah {
void something();
}
...
// Something that expects an object implementing that interface
void chewOnIt(Blah b) {
b.something();
}
...
// Let's provide an object of an anonymous class
chewOnIt(
new Blah() {
@Override
void something() { System.out.println("Anonymous something!"); }
}
);
익명 클래스는 객체를 생성하는 동안 확장 또는 구현됩니다. 예 :
Interface in = new InterFace()
{
..............
}
여기서 익명 클래스는 인터페이스를 구현합니다.
Class cl = new Class(){
.................
}
여기서 익명 클래스는 추상 클래스를 확장합니다.
참고URL : https://stackoverflow.com/questions/5848510/how-can-an-anonymous-class-use-extends-or-implements
'Programing' 카테고리의 다른 글
열기 / 닫기 태그 및 성능? (0) | 2020.09.07 |
---|---|
JavaScript-문자열 정규식 역 참조 (0) | 2020.09.07 |
16 진수 또는 10 진수 형식으로 변수 인쇄 (0) | 2020.09.07 |
정규 문법과 문맥 자유 문법 (0) | 2020.09.07 |
C # 용 CSV 파서 / 리더? (0) | 2020.09.07 |