06_继承

1.被继承的类成为父类或基类         继承其他类的称为子类或派生类   ( 子类 :父类——意思是子类继承父类)

2.子类不仅具有自己独有的成员,还具有父类的成员。

3.通过this关键字可以访问父类继承过来的属性

如父类为person类

   public class Person
    {
        public Person() { }
        public Person(string name,int age,Genders gender) 
        {
            this.name = name;
            this.age = age;
            this.genders = gender;
        }
        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        private int age;

        public int Age
        {
            get { return age; }
            set 
            {
                if (value > 0 && value < 120)
                    age = value;
                else
                    age = 18;
            }
        }
        private Genders genders;

        public Genders Genders
        {
            get { return genders; }
            set { genders = value; }
        }


    }

 我们在子类student就可以通过this关键字访问父类的属性

   public class Student:Person
    {
        public Student() { }
        public Student(string name, int age, Genders gender,string hobby,string popularity) 
        {
            //继承父类的属性  (首字母大写的 就是父类的属性)
            this.Name = name;
            this.Age = age;
            this.Genders = gender;
            //学生类自己扩展的属性
            this.hobby = hobby;
            this.popularity = popularity;
        }
}

 4.protected关键字  这个访问修饰符所修饰的成员只允许子类访问。

5.Base关键字 用于表示父类,可以用于访问父类成员

Console.WriteLine("大家好,我是{0}同学,今年{1}岁了,我喜欢{2} ;",this.Name,this.Age,this.hobby);
Console.WriteLine("大家好,我是{0}同学,今年{1}岁了,我喜欢{2} ;", base.Name,base.Age,this.hobby);

 两个意义等同

 

以上的student类还可以写成以下形式:

        public Student(string name, int age, Genders gender,string hobby,string popularity)  : base(name,age,gender)
        {
            //学生类自己扩展的属性
            this.hobby = hobby;
            this.popularity = popularity;
        }

 6.this关键字和base关键字的区别

this关键字是对父类的属性值重写

base关键字是直接调用父类的属性

 

7.继承的特点

单根性:一个子类不能同时继承多个父类

### 公有继承的概念 公有继承是C++中一种重要的继承形式,在这种继承关系下,基类的`public`成员会成为派生类的`public`成员,而基类的`protected`成员则会成为派生类的`protected`成员[^3]。这意味着通过公有继承,派生类的对象可以直接访问基类中的公共接口。 ### 公有继承的特点 1. **可访问性** 基类的`public`成员在派生类外部仍然可以通过派生类对象访问;基类的`protected`成员虽然无法被派生类外部直接访问,但在派生类内部是可以使用的[^4]。 2. **扩展功能** 派生类不仅可以继承基类的功能,还可以在此基础上增加新的属性和方法,或者覆盖基类的方法来改变其行为。 3. **类型兼容性** 如果一个指针或引用指向的是基类类型的对象,则它可以用来操作任何派生自该基类的对象。这体现了公有继承的一个重要特性:**向上转型**(Upcasting)。例如,如果有一个基类`A`和派生类`B`,那么可以将`B*`转换为`A*`并调用定义于`A`中的函数[^2]。 ### 示例代码展示 以下是关于如何使用C++中的公有继承的例子: ```cpp #include <iostream> using namespace std; class Base { public: void displayBase() { cout << "This is a function from the base class." << endl; } }; class Derived : public Base { public: void displayDerived() { cout << "This is an additional function in the derived class." << endl; } }; int main() { Derived dObj; // 创建派生类实例 // 调用从基类继承来的函数 dObj.displayBase(); // 调用派生类自己的函数 dObj.displayDerived(); return 0; } ``` 在这个例子中,`Derived` 类公开地继承了 `Base` 类。因此,它不仅能够利用自己新增加的能力 (`displayDerived`) ,还能继续享有来自父辈的一切公共资源(`displayBase`) [^1]。 ### 注意事项 尽管公有继承允许子代完全暴露祖先的所有公开界面给外界知道,但这并不总是理想的设计方案。过度依赖开放存取可能导致模块间耦合度过高,影响软件维护成本以及未来扩展灵活性等问题的发生几率增大。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值