자바 인터페이스의 객체
315
작성자 없음
인터페이스는 일단 객체를 못만든다고 알고 있어요
근데 익명이너클래스를 이용해서 만드는 방법이 있던데
interface A{
abstract void abc();
}
이거를
A a = new A(){
public void abc(){.....}
};
이렇게 할 수 있던데 익명이너클래스에 인터페이스를 상속해서 abstract메서드를 오버라이딩 했기때문에
가능하다는 건 알겠는데 그러면 객체는 익명이너클래스의 객체 아닌가요...?
익명객체가 인터페이스A를 상속받았기때문에 다형적인 표현으로 A a 이렇게 표현이 가능한건가요?
저런 표현이 가능한가요? 참조변수 a는 인터페이스A 타입인 객체를 가리킨다는 뜻 아닌가요..?
근데 인터페이스는 객체를 못만든다고 배웠는데.. ㅠㅠㅠ 정말 이 부분이 이해가 안 갑니다 ㅠㅠㅠ
왜 객체를 인터페이스 타입으로 지칭하는지 ㅠㅠ
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
인터페이스는 미완성된 추상 메서드들의 집합이기 때문에 객체를 직접 생성할 수 없습니다. 하지만 익명 내부 클래스를 사용하면 인터페이스를 구현한 객체를 생성할 수 있습니다.
예를 들어, 인터페이스 A를 구현한 객체를 생성하고 싶다면 다음과 같이 익명 내부 클래스를 사용할 수 있습니다.
interface A {
void abc();
}
A a = new A() {
public void abc() {
// 구현 내용 작성
}
};
위의 코드에서 a는 인터페이스 A를 구현한 익명 내부 클래스의 객체를 가리킵니다. 익명 내부 클래스는 인터페이스 A를 상속받았고, abc 메서드를 오버라이딩하여 구현했기 때문에 A a라는 형태로 참조 변수를 선언할 수 있는 것입니다.
인터페이스 자체로는 객체를 생성할 수 없지만, 익명 내부 클래스를 통해 인터페이스를 구현한 객체를 생성할 수 있습니다. 이를 통해 다형성을 활용할 수 있어 객체지향적인 프로그래밍을 할 수 있습니다.
저희가 “인터페이스는 객체를 못만든다”라고 설명한 것은 인터페이스만으로 객체를 생성할 수 없다는 의미였습니다. 익명 내부 클래스를 사용하면 인터페이스를 구현한 객체를 생성할 수는 있지만, 여전히 인터페이스 형태로만 접근이 가능합니다.
더 궁금한 점이 있으시면 언제든지 물어보세요!
멍슨상이라 이름 변경하시는 게 어떠신지요?
1
8
0
55강 파이썬에만있는 연산자들
0
10
1
55강의 파이썬에서만 있는 연산자들
0
9
1
안녕하세요 토비님 혹시 완성된 코드의 repository 주소는 없을까요?
0
13
0
강의 영상 업로드 질문
0
18
2
자막 오타 제보
0
17
1
운영환경에 적용해볼 수 없을때...고민입니다 ㅠㅠ
0
24
1
13 섹션 병렬 스트림 고급 1탄 매치 문의
0
31
2
29강 5:00
0
32
2
3차원 배열의 인덱스 해석 순서와 3중 반복문 순회 메커니즘에 대해 질문드립니다.
0
25
1
인텔리제이 설정 최신화 관련 확인 부탁 드립니다!
0
42
2
띄어쓰기
0
36
2
공부 순서
1
45
2
코딩 문제 사이트 접속 오류
0
28
1
재귀함수 연산법
0
33
2
동일성 동등성
0
24
1
안녕하세요 치킨 디도스 이벤트 보고 흉내내보려 들어왔습니다..
0
29
2
47번 리턴 관련 질문
0
29
1
실무 내용 문의드려요
0
29
2
IO활용-회원관리예제1 샘플코드 문의
0
22
1
join에대해 질문드립니다.
0
23
1
pg사가 있다고 가정하면
0
27
1
중급 1편 학습 방향에 대해 조언 부탁드립니다
0
45
1
To-Do App
0
27
1





