Java에서 인터페이스의 인스턴스를 만들 수 있습니까?
이 질문에 이미 답변이 있습니다.
Java에서 인터페이스의 인스턴스를 만들 수 있습니까?
어딘가에서 내부 익명 클래스를 사용하여 다음과 같이 할 수 있다고 읽었습니다.
interface Test
{
public void wish();
}
class Main
{
public static void main(String[] args)
{
Test t=new Test()
{
public void wish()
{
System.out.println("output: hello how r u");
}
};
t.wish();
}
}
cmd> javac Main.java
cmd> java Main
output: hello how r u
여기가 맞습니까?
예, 귀하의 예가 맞습니다. 익명 클래스는 인터페이스를 구현할 수 있으며, "implements"키워드없이 인터페이스를 구현하는 클래스를 보게 될 것이라고 생각할 수있는 유일한 시간입니다. 여기에서 다른 코드 샘플을 확인하세요.
interface ProgrammerInterview {
public void read();
}
class Website {
ProgrammerInterview p = new ProgrammerInterview () {
public void read() {
System.out.println("interface ProgrammerInterview class implementer");
}
};
}
이것은 잘 작동합니다. 이 페이지에서 가져온 것 :
http://www.programmerinterview.com/index.php/java-questions/anonymous-class-interface/
Java에서 인터페이스를 인스턴스화 할 수 없습니다. 그러나 인터페이스 유형별로 인터페이스를 구현하는 객체를 참조 할 수 있습니다. 예를 들면
public interface A
{
}
public class B implements A
{
}
public static void main(String[] args)
{
A test = new B();
//A test = new A(); // wont compile
}
위에서 한 것은 인터페이스를 구현하는 Anonymous 클래스를 만드는 것입니다. 유형의 개체가 아닌 익명 개체를 만들고 interface Test
있습니다.
일반적으로 인터페이스에 대한 참조를 만들 수 있습니다. 그러나 인터페이스에 대한 인스턴스를 만들 수 없습니다.
짧은 대답 ... 예. 변수를 초기화 할 때 익명 클래스를 사용할 수 있습니다. 이것 좀 봐
제 생각에는 인터페이스의 참조 변수를 만들 수는 있지만 추상 클래스처럼 인터페이스의 인스턴스를 만들 수는 없습니다.
네, 맞습니다. 내부 클래스로 할 수 있습니다.
Yes we can, "Anonymous classes enable you to make your code more concise. They enable you to declare and instantiate a class at the same time. They are like local classes except that they do not have a name"->>Java Doc
참고URL : https://stackoverflow.com/questions/4587392/can-we-create-an-instance-of-an-interface-in-java
'program story' 카테고리의 다른 글
Excel에서 비어 있지 않은 모든 셀을 선택하기 위해 countifs를 얻는 방법은 무엇입니까? (0) | 2020.10.29 |
---|---|
ASP.NET MVC의 Page.ResolveUrl에 해당하는 것은 무엇입니까? (0) | 2020.10.29 |
IE9의 box-shadow는 올바른 CSS를 사용하여 렌더링되지 않고 Firefox, Chrome에서 작동합니다. (0) | 2020.10.29 |
android.intent.action.MAIN의 의미는 무엇입니까? (0) | 2020.10.29 |
Entity Framework SaveChanges () 대 SaveChangesAsync () 및 Find () 대 FindAsync () (0) | 2020.10.29 |