C 언어
인터페이스는 해당 클래스의 특정 구현을 커밋하지 않고 C++ 클래스의 동작 또는 기능을 설명합니다.
C++ 인터페이스는 추상 클래스를 사용하여 구현됩니다. 이러한 추상 클래스는 구현 세부 정보를 관련 데이터와 분리하여 유지하는 개념인 데이터 추상화와 혼동되어서는 안 됩니다.
클래스는 함수 중 하나 이상을 순수 가상으로 선언하여 추상화됩니다. 기능. 순수 가상 함수는 다음과 같이 선언에 "=0"을 배치하여 지정됩니다. -
class Box { public: // pure virtual function virtual double getVolume() = 0; private: double length; // Length of a box double breadth; // Breadth of a box double height; // Height of a box };
추상 클래스의 목적 (종종 ABC라고 함) 다른 클래스가 상속할 수 있는 적절한 기본 클래스를 제공하는 것입니다. 추상 클래스는 개체를 인스턴스화하는 데 사용할 수 없으며 인터페이스로만 사용됩니다. . 추상 클래스의 개체를 인스턴스화하려고 하면 컴파일 오류가 발생합니다.
따라서 ABC의 하위 클래스를 인스턴스화해야 하는 경우 각 가상 기능을 구현해야 하며, 이는 ABC에서 선언한 인터페이스를 지원한다는 것을 의미합니다. 파생 클래스에서 순수 가상 함수를 재정의하지 못한 다음 해당 클래스의 개체를 인스턴스화하려고 하면 컴파일 오류입니다.
개체를 인스턴스화하는 데 사용할 수 있는 클래스를 구체 클래스라고 합니다. .
상위 클래스가 getArea()라는 함수를 구현하기 위해 기본 클래스에 대한 인터페이스를 제공하는 다음 예를 고려하십시오. -
라이브 데모#include <iostream> using namespace std; // Base class class Shape { public: // pure virtual function providing interface framework. virtual int getArea() = 0; void setWidth(int w) { width = w; } void setHeight(int h) { height = h; } protected: int width; int height; }; // Derived classes class Rectangle: public Shape { public: int getArea() { return (width * height); } }; class Triangle: public Shape { public: int getArea() { return (width * height)/2; } }; int main(void) { Rectangle Rect; Triangle Tri; Rect.setWidth(5); Rect.setHeight(7); // Print the area of the object. cout << "Total Rectangle area: " << Rect.getArea() << endl; Tri.setWidth(5); Tri.setHeight(7); // Print the area of the object. cout << "Total Triangle area: " << Tri.getArea() << endl; return 0; }
위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -
Total Rectangle area: 35 Total Triangle area: 17
getArea()의 관점에서 추상 클래스가 인터페이스를 정의한 방법과 모양에 특정한 영역을 계산하기 위해 다른 알고리즘을 사용하여 동일한 기능을 구현하는 두 개의 다른 클래스를 볼 수 있습니다.
객체 지향 시스템은 추상 기본 클래스를 사용하여 모든 외부 응용 프로그램에 적합한 공통의 표준화된 인터페이스를 제공할 수 있습니다. 그런 다음 해당 추상 기본 클래스의 상속을 통해 유사하게 작동하는 파생 클래스가 형성됩니다.
외부 응용 프로그램에서 제공하는 기능(즉, 공개 기능)은 추상 기본 클래스에서 순수 가상 기능으로 제공됩니다. 이러한 순수 가상 기능의 구현은 애플리케이션의 특정 유형에 해당하는 파생 클래스에서 제공됩니다.
또한 이 아키텍처를 사용하면 시스템이 정의된 후에도 새 응용 프로그램을 시스템에 쉽게 추가할 수 있습니다.
C 언어
이 장에서는 Java의 내부 클래스에 대해 설명합니다. 중첩 클래스 Java에서 메소드와 마찬가지로 클래스의 변수도 다른 클래스를 멤버로 가질 수 있습니다. 다른 클래스 내에 클래스를 작성하는 것은 Java에서 허용됩니다. 내부에 작성된 클래스를 중첩 클래스라고 합니다. , 내부 클래스를 보유하는 클래스를 외부 클래스라고 합니다. . 구문 다음은 중첩 클래스를 작성하는 구문입니다. 여기에서 Outer_Demo 클래스 외부 클래스이고 Inner_Demo 클래스입니다. 중첩 클래스입니다. class Outer_Demo {
소방서는 미국에서만 매년 백만 건 이상의 화재에 대응합니다. 그리고 그 숫자는 1970년대 이후 꾸준히 감소하고 있지만 화재는 여전히 발생할 때마다 극도로 위험한 상황의 가능성을 제시합니다. 그러나 그것들은 모두 타지만 모든 불이 같은 것은 아닙니다. 화재를 분류하고 진화하는 방법을 위해 소방 전문가들은 화재를 분류하는 시스템을 개발했습니다. 화재 등급은 무엇을 설명합니까? 화재 등급은 가장 좋은 소화 또는 진압 방법을 포함하여 다른 공통 기능과 함께 존재하는 연료 소스를 설명합니다. 정밀 가공과 같이 화재 위험이 높은 산업에서