2010-03-03 2 views
1

인터페이스 및 추상적 인 공공 기능은

는 몇 가지 방법을 구현해야한다는 주문처럼,

너무 차이가 무엇, interfaceabstract function 모두 매우 유사하다는 것을 나에게 보인다?

+0

중복 http://stackoverflow.com/questions/1221512/abstract-class-and-interface-class –

+0

다른 중복 http://stackoverflow.com/questions/761194/interface-vs-abstract-class-general- oo –

+0

죄송합니다. ** typo **입니다. 추상적 인 기능을 의미합니다. – user198729

답변

6

Have a look at this.

인용 : (전자 satis에 의해 매우 좋음 Explantion)

인터페이스를

인터페이스는 계약이다 : 사람은 인터페이스가 봐 "라고 쓰고, 나는 그런 식으로 보이는 것을 받아들입니다. "인터페이스를 사용하는 사람은"좋아요, 수업은 저렇게 씁니다 "라고 말합니다.

인터페이스는 빈 쉘입니다. 메소드의 서명 (이름/매개 변수/반환 유형) 만 있습니다. 이 메소드에는 아무것도 포함되어 있지 않습니다. 인터페이스는 아무 것도 할 수 없습니다. 그것은 단지 패턴입니다.

예 : (의사 코드) : 그것은 클래스, 이름 만 무리하지, 그리고 그에 할 수있는 고가의 조회가 없기 때문에 인터페이스를 구현

// I say all motor vehicles should look like that : 
interface MotorVehicle 
{ 
    void run(); 

    int getFuel(); 
} 

// my team mate complies and write vehicle looking that way 
class Car implements MotoVehicle 
{ 

    int fuel; 

    void run() 
    { 
     print("Wrroooooooom"); 
    } 


    int getFuel() 
    { 
     return this.fuel; 
    } 
} 

는 거의 CPU를 소비한다. 임베디드 장치와 같이 중요 할 때 유용합니다.

추상 클래스

추상 클래스, 인터페이스와 달리 클래스입니다. 당신이 그들로부터 물려받을 때해야 할 룩업이 있기 때문에 사용하는 것이 더 비쌉니다.

추상 클래스는 인터페이스와 비슷하지만 더 많은 것을 가지고 있습니다. 즉, 클래스에 대한 동작을 정의 할 수 있습니다. "이 수업은 그렇게 보일 것입니다. 공통점이 있으므로 공백을 채워주세요!"라고 말하는 사람에 관한 것입니다.

예컨대 : 다중 상속이없는 언어에서 https://stackoverflow.com/users/9951/e-satis

1

는 차이가 매우 중요하다으로

// I say all motor vehicles should look like that : 
abstract class MotorVehicle 
{ 

    int fuel; 

    // they ALL have fuel, so why let others implement that ? 
    // let's make it for everybody 
    int getFuel() 
    { 
     return this.fuel; 
    } 

    // that can be very different, force them to provide their 
    // implementation 
    abstract void run(); 


} 

// my team mate complies and write vehicle looking that way 
class Car extends MotorVehicule 
{ 
    void run() 
    { 
     print("Wrroooooooom"); 
    } 
} 

. PHP 또는 Java 용어에서 클래스는 여러 인터페이스를 구현할 수 있지만 단일 상위 클래스 (상속 일 수 있음)에서만 상속 할 수 있습니다.

예를 들어, C++에서는 구분이 덜 중요해진다.

관련 문제