2012-02-10 3 views
0

나는 AP CS에 있는데 이것이 작동하는지 알아 내려고하고있다.AP CS Practice - OOP

public interface Controller 
public class Widget implements Controller 
public class Thingy extends Widget 

Controller myControl = new Thingy(); 

맨 위에있는 인터페이스/클래스가 실제로 정의된다고 가정하십시오. 네 번째 줄 (Controller myControl = new Thingy();)이 작동합니까? 아니면 그런 인터페이스에서 객체를 만들 수 없습니까?

+0

예 – Adrian

답변

2

하실 수 있습니다.

이 경우 구체 클래스 인 Thingy의 인스턴스를 인스턴스화합니다. 방금 유형을 Controller (으)로 선언했습니다. 즉, 인터페이스를 사용하는 것은 인터페이스 Controller에서 사용할 수있는 메소드에만 액세스 할 수 있습니다 (다운 캐스트, 반사 등을 사용하지 않는 한). 실제로는 myControl의 실제 구현을 바꿀 수 있고 객체 사용자가 신경 쓰지 않기 때문에 좋은 방법입니다.

1

다형성과 상속의 기본입니다. OOP를 완전히 이해하려면 살고 호흡해야하는 두 가지 용어입니다.

이것을 고려 :

당신은 자동차 인터페이스, 자동차 및 스포츠카를 확장하는 포르쉐 객체를 구현하는 스포츠카 객체가 있습니다.

스포츠카는 IS-A 자동차 그래서 당신은 말할 수 : Car myCar = new SportsCar(); 포르쉐는 IS-A 스포츠카 당신이 말할 수 있도록 : 같은 토큰에 의해 SportsCar myCar = new Porsche();

를, 포르쉐는 확실히 말할 수 있도록 자동차-A IS :

Car myCar = new Porsche(); 

핵심 내용 : 해당 하위 클래스에 대한 참조를 보유 할 수있는 수퍼 클래스 (인터페이스, 추상 클래스 또는 기타).

0

Thingy의 인스턴스를 만듭니다.이 인스턴스는 컨트롤러을 구현합니다. 컨트롤러 인터페이스 자체를 인스턴스화 할 수 없습니다.