인터페이스와 가상 메서드
354
1 asked
아래 코드에서 Customer 클래스는 Buy, Sell 인터페이스를 구현하고 buy, sell, order 메서드를 갖고 있는데,
buyer.sell()은 왜 실행되지 않는건지 궁금합니다.
가상메서드에 의해 Customer 클래스의 sell 메서드가 불리는 것이 아닌가요?
public class CustomerTest {
public static void main(String[] args) {
Customer customer = new Customer();
Buy buyer = customer;
buyer.buy();
Sell seller = customer;
seller.sell();
// 가상 메서드 : 인스턴스의 메서드가 불림
customer.order();
buyer.order();
seller.order();
}
}
Answer 1
0
buyer 의 타입이 Buy 입니다.
Buy 인터페이스에는 구현하지 않은 buy() 메서드와
기본 메서드인 order() 두 가지이죠.
인스턴스를 인터페이스 타입의 변수에 바인딩하는 경우, 각 인터페이스에서 선언한 메서드만 호출 할 수 있습니다.
반면 두 인터페이스의 메서드를 구현한 클래스의 인스턴스의 경우 모두 호출할 수 있습니다.
그런데 두 인터페이스에서 중복된 메서드를 구현 클래스에서 재정의하고
이를 인터페이스 타입의 변수와 구현 클래스의 인스턴스로 호출한 결과는
모두 인스턴스의 오버라이딩한 메서드가 호출됩니다.
이클립스 활성화가 안되는부분이있어요ㅜㅜ
0
429
1
책에 자료실
0
495
1
StudentID
0
553
1
11분쯤 price, int price 질문
0
350
1
For문 (중첩된 반복문) 구구단 문의 드립니다.
0
782
1
반복문 별 출력 연습문제
0
390
1
비트 연산자 질문입니다.
1
367
1
Scheduler scheduler = null 굳이 하는 이유가 있나요
1
333
0
Class간의 연결
1
292
1
선생님 스킬
0
392
1
초기화 에러!!!
0
282
1
선생님 영상에서 목소리가 좀 작은 것 같습니다 ㅠㅠ
2
300
0
출력
2
230
0
Main 함수 저번 강의 거가 나와요
0
312
1
결과값오류
1
222
0
printIn 함수 질문
0
449
1
24분 57초에 질문 있습니다!!
0
359
1
1분36초쯤에 말씀하시는 자바닥??그거 보라고 하셨는데 자바닥이 뭐죠..?
0
246
1
메서드와 생성자
0
393
2
참조형 데이터 타입은 클래스 이름과 같아야 하나요?
0
282
1
반환값은 정수 밖에 안되나요?
0
270
1
9분33초 설명!!부탁 드립니다!
0
296
1
48분쯤에 {"B","C","D""} 를 왜 {'B','C','D'}로 바꿨죠?
0
294
1
for (byte b : bs) 가 뭐죠..
0
501
1

