자바 인터페이스의 객체 java

자바 인터페이스의 객체 java

작성일 2023.09.26댓글 2건
    게시물 수정 , 삭제는 로그인 필요

인터페이스는 일단 객체를 못만든다고 알고 있어요

근데 익명이너클래스를 이용해서 만드는 방법이 있던데

 

interface A{

abstract void abc();

}

이거를

A a = new A(){

public void abc(){.....}

};

이렇게 할 수 있던데 익명이너클래스에 인터페이스를 상속해서 abstract메서드를 오버라이딩 했기때문에

가능하다는 건 알겠는데 그러면 객체는 익명이너클래스의 객체 아닌가요...?

 

익명객체가 인터페이스A를 상속받았기때문에 다형적인 표현으로 A a 이렇게 표현이 가능한건가요?

저런 표현이 가능한가요? 참조변수 a는 인터페이스A 타입인 객체를 가리킨다는 뜻 아닌가요..?

근데 인터페이스는 객체를 못만든다고 배웠는데.. ㅠㅠㅠ 정말 이 부분이 이해가 안 갑니다 ㅠㅠㅠ

왜 객체를 인터페이스 타입으로 지칭하는지 ㅠㅠ



profile_image 익명 작성일 -

안녕하세요.

인터페이스

interface A{

abstract void abc();

}

존재하고, 우리는 이 인터페이스를 사용하기 위해서 어떤 클래스든 만들어서 이 인터페이스를 구현해야 합니다.

class C implements A{

public void abc(){}

}

이렇게 인터페이스를 구현하면, C클래스는 사용이 가능한 상태가 됩니다.

그리고 A a = new C();

이렇게 C클래스 객체이지만 A인터페이스 타입으로도 접근이 가능합니다.

이런 형태가 기본적이고, 여기에서 이 C라는 클래스는 일회성으로 이번 한번만 사용하고 사용할 일이 없다고 할때

위와 같이 굳이 만들어야 하나 생각이 들수도 있겠지요.

그래서 어차피 인터페이스를 사용하려면 인터페이스에 정의되어 있는 미완성 메소드를 완성시키기 위함입니다.

class C implements A

라는 과정을 생략하는 것이지요.

C라는 클래스 이름은 없애고 그냥 미완성 부분을 완성시켜주는것이지요.

A a = new A(){

public void abc(){.....}

};

위에서 빨간부분이 클래스를 빼고 클래스를 정의했다고 생각하세요. 대신 클래스는 존재하지 않으므로 이름이 없고,

이름이 존재하지 않으므로 이후에는 이 클래스를 다시 생성할 수 없습니다.

클래스 이름이 있다면, 이후에 new C(); 를 얼마든지 하지만 위의 경우에는 이름이 없기 때문에 1회성으로만 사용이 됩니다. 이를 익명객체 라고 합니다.

익명객체가 만들어지고, 그 참조주소를 a라는 참조변수가 참조하지요.

A a = new C();

여기에서 빨간 부분만 익명객체 생성부분으로 바뀌었다고 생각하시면 됩니다.

참고하세요.

profile_image 익명 작성일 -

우선 interface에 정의된 메서드에는 abstract가 필요없소

그것은 abstract class에서 해당 메서드가 추상 메서드라고 정의하기 위함이요

interface A{ void abc(); } A a = new A() { @Override public void abc() { } }

가 가능한 것은 익명의 이너클래스에 인터페이스가 상속되서 오버라이딩 된게 아니라

그냥 해당 인터페이스를 상속한 익명의 클래스를 그냥 객체 생성함이요, 그리고 인터페이스의 메서드 및 추상 클래스의 abstract 메서드는 모두 오버라이딩을 해야하는 것이 규칙일 뿐이요

인터페이스를 표(모양, 겉)만 있고 리(뜻, 속)가 없는 것이므로 그 자체로는 리인 객체를 만들어 낼 수 없소

그러므로 해당 표를 통해 파생된 리를 만들어야 하오

허나 그 많은 리들은 표는 동일 하므로 같은 표를 통해 들여다 볼 수 있음이오

이것을 통해 각 리들은 여러 표를 가질 수 있음으로 이것을 다형성이라고 말하는 것이오

자바 인터페이스 객체생성 궁금점

... 저는 인터페이스에 대해 설명드릴 때, 과일에 대한 설명을 자주합니다. Collection 객체에 과일이라는... [code] import java.util.HashSet; import java.util.Iterator; import...

자바(java)객체관련 질문합니다.

자바과제를 하는중 질문드리겠습니다. 과제질문이... 혹은 인터페이스 간의 관계를 나타낸 것입니다. Java 책에서 객체지향 관련된 부분을...

자바 익명 인터페이스 객체..

여기서 class window{ 안의 window()는 익명 객체를 대입하는 생성자 인가요?... 더 자세한 내용은 관련 Java 공식 문서에서 확인하세요! https://docs.oracle.com...

자바(JAVA) 객체지향언어 질문

객체지향언어 특성 3가지(캡슐화,상속,다형성)을... 하나의 인터페이스에서 그것을 그것을 구현하는 각... 활용 JAVA에 좀더 관심이 있으시다면 국비 무료 교육을 추천...

자바 객체지향에대해서

... 자바의 특성(객체지향의 특성이 아닙니다. 같은 객체지향 언어일지라도 특성은... 코드의 재사용을 통해 가독성을 높이며 다중상속이 불가능하고 인터페이스와 구현을 통해...

자바 인터페이스...와 자바 import...

... Random random = new java.util.Random(); 이렇게 정의되죠.. 2.인터페이스객체 생성이 되나요? 인터페이스... 인터페이스를 제대로 이용하기 위해서는 자바의...

자바 객체 생성 질문

자바 객체 (인스턴스) 생성에 관한 질문입니다.... List 인터페이스를 사용하고 있으니 그냥 반복문으로만 import java.util.ArrayList; import java....

java 자바 interface 인터페이스 에...

... 대상 객체가 Comparable 인터페이스를 구현하여야 한다. 메소드 void... import java.util.Random; public class SelectionSortTest { public static void main(String...