モジュールのレッスン (1/2)
C++ における継承
継承 は、オブジェクト指向プログラミング (OOP) の重要な柱の 1 つです。これにより、新しいクラス (派生クラスまたは子クラスと呼ばれる) が既存のクラス (基本クラスまたは親クラスと呼ばれる) からメンバー (属性およびメソッド) を継承できるようになり、コードの再利用が促進されます。
基本的な構文
C++ では、継承は派生クラス名の後に : 演算子を使用し、その後にアクセス指定子 (通常は public) と基本クラス名を続けて指定します。
class Shape {
public:
void setColor(std::string c) {
color = c;
}
protected:
std::string color; // Accessible by derived classes
};
// Rectangle inherits publicly from Shape
class Rectangle : public Shape {
public:
double getArea() {
return width * height;
}
private:
double width {0.0};
double height {0.0};
};アクセス指定子: protected
public および private とともに、継承には protected 指定子が導入されています。
- 基本クラスの
privateメンバーには、派生クラスから直接アクセスできません**。 - 基本クラスの
protectedメンバーは外部からアクセスできませんが、派生クラス内では直接アクセス可能です。
基本クラスの初期化
コンストラクターは自動的には継承されません。派生クラスをインスタンス化するときは、基本クラスのコンストラクターが最初に呼び出されます。基本クラスに引数が必要な場合は、派生コンストラクターの メンバー初期化子リスト で明示的に呼び出す必要があります。
class Parent {
public:
Parent(int x) {
std::cout << "Parent: " << x << std::endl;
}
};
class Child : public Parent {
public:
// Explicit call to Parent constructor
Child(int x, int y) : Parent(x) {
std::cout << "Child: " << y << std::endl;
}
};自分で試してみてください
Animal クラスをパブリックに継承する Dog クラスを作成します。 Dog クラスには、std::cout を使用して「Playing」を出力するパブリック play() メソッドが含まれている必要があります。
ヒントを表示
「:」構文の後に「public Animal」を使用して基本クラスを拡張し、「play()」メソッドを記述します。
3 回の試行後に解決策が利用可能になります
Vehicle から継承して Car クラスを完成させます。 std::string b を受け入れ、それをメンバー初期化子リストを介して Vehicle コンストラクターに渡す Car のコンストラクターを作成します。
ヒントを表示
`Car` コンストラクターで、パラメーターの括弧の直後に構文 `: Vehicle(b)` を使用して、ブランドの初期化を基本クラスに委任します。
3 回の試行後に解決策が利用可能になります