如何将类继承为一个?

摘要:前言 类的继承是面向对象编程(OOP)的核心特性之一,核心价值在于 代码重用 和 逻辑分层,通过抽取不同对象的共性抽象为父类,子类基于父类扩展特有属性和方法,减少重复代码并提升框架稳定性。 类继承的核心概念 定义 类的继承是对对象概念的 纵
前言 类的继承是面向对象编程(OOP)的核心特性之一,核心价值在于 代码重用 和 逻辑分层,通过抽取不同对象的共性抽象为父类,子类基于父类扩展特有属性和方法,减少重复代码并提升框架稳定性。 类继承的核心概念 定义 类的继承是对对象概念的 纵向抽象模拟:将不同对象的共性属性/方法抽离为 父类(基类,Base Class),再通过 派生 生成 子类(派生类,Derived Class),子类自动拥有父类的非私有成员,同时可扩展自身特有成员。 核心优势 代码重用:无需重复编写父类已定义的共性逻辑 逻辑清晰:构建对象间的层级关系,符合现实世界认知 易于维护:修改父类共性逻辑时,所有子类自动受益 经典示例(现实世界抽象) 示例逻辑:猫、狗均属于哺乳动物,共性(体温、体重)抽象到 Mammal 父类,子类仅关注特有行为(喵喵叫、汪汪叫)。 继承的基本语法 语法格式 // 父类定义 class 父类名 { // 成员属性 + 成员方法 }; // 子类继承语法:class 子类名 : 继承方式 父类名 class 子类名 : 继承方式 父类名 { public: // 子类构造函数(需显式调用父类构造函数) 子类名(参数列表) : 父类名(父类参数列表) { // 子类初始化逻辑 } // 子类特有属性 + 方法 }; 实战示例(哺乳动物→猫/狗) #include <iostream> using namespace std; // 父类:哺乳动物 class Mammal { float heat; // 体温(共性属性) float weight; // 体重(共性属性) public: // 父类构造函数(默认参数) Mammal(float h = 0.0f, float w = 0.0f) : heat(h), weight(w) {} // 父类共性方法 void showInfo() const { cout << "体温:" << heat << "℃" << endl; cout << "体重:" << weight << "kg" << endl; } // 【补充】提供访问私有成员的接口(供子类间接访问) float getHeat() const { return heat; } float getWeight() const { return weight; } }; // 子类:狗(公有继承 Mammal) class Dog : public Mammal { public: // 子类构造函数:显式调用父类构造函数 Dog(float h, float w) : Mammal(h, w) {} // 子类特有方法 void bark() const { cout << "汪汪!" << endl; } }; // 子类:猫(公有继承 Mammal) class Cat : public Mammal { public: // 子类构造函数:显式调用父类构造函数 Cat(float h, float w) : Mammal(h, w) {} // 子类特有方法 void miaow() const { cout << "喵喵!" << endl; } }; // 测试代码 int main() { Dog dog(38.5f, 20.0f); cout << "=== 狗的信息 ===" << endl; dog.showInfo(); // 继承自父类的方法 dog.bark(); // 子类特有方法 Cat cat(38.7f, 5.0f); cout << "\n=== 猫的信息 ===" << endl; cat.showInfo(); // 继承自父类的方法 cat.miaow(); // 子类特有方法 return 0; } 三种继承方式与访问控制 继承方式决定了父类成员在子类中的 访问权限,核心是控制子类及子类对象对父类成员的访问范围。
阅读全文