추상 클래스는 기본 클래스와 동일한 것입니까?추상 클래스는 기본 클래스와 동일한 것입니까?
때때로 나는 기본 클래스라는 용어를 사용합니다. 그러나 이것이 의미하는 바를 찾아 보면 "추상 클래스"가 던져지는 경향이 있습니다.
기본적으로 똑같은 두 단어입니까?
추상 클래스는 기본 클래스와 동일한 것입니까?추상 클래스는 기본 클래스와 동일한 것입니까?
때때로 나는 기본 클래스라는 용어를 사용합니다. 그러나 이것이 의미하는 바를 찾아 보면 "추상 클래스"가 던져지는 경향이 있습니다.
기본적으로 똑같은 두 단어입니까?
이것은 일반적인 기본 클래스 다각형입니다 :
class Polygon {
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b; }
virtual int area()
{ return 0; }
};
class Rectangle: public Polygon {
public:
int area()
{ return width * height; }
};
class Triangle: public Polygon {
public:
int area()
{ return (width * height/2); }
};
추상 기본 클래스는 앞의 예에서 다각형 클래스와 매우 비슷한 있습니다. 이 클래스는 기본 클래스로만 사용할 수있는 클래스이므로 (인스턴스화 할 수 없음) 정의없이 가상 멤버 함수를 가질 수 있습니다 (순수 가상 함수라고 함).
이추상 기본 다각형 클래스는 다음과 같이 수 :
// abstract class CPolygon
class Polygon {
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b; }
virtual int area() =0;
};
그리고'virtual int area() = 0;의 효과는 실제로 무엇입니까? 언제 적용됩니까? –
기본 클래스에는 구현이 없다는 것을 의미하며 기본 클래스에서 파생 된 모든 클래스는'int area()'를 구현해야합니다. 그렇지 않으면 코드가 컴파일되지 않습니다 – Kam
하나의 실제적인 차이점은이 만들 수 있다는 것입니다 구문은 = 0으로 정의 (및 등호와 제로)를 대체하는 것입니다 추상 기본 클래스의 객체 은 비 추상 기본 클래스의 객체를 만들 수 있습니다. 이 차이점은 어느 것이 언제 사용할 것인지를 결정하기에 충분합니다. :)
추상 기본 클래스와 비 추상 기본 클래스가있을 수 있습니다. –
아니요. 추상 클래스는 항상 기본 클래스이지만 그 반대는 아닙니다. –