C#面向对象-10继承

本文探讨了C#中的继承概念,包括应用场景、继承特性、子类继承的内容,以及`protected`关键字的使用。子类继承了父类的属性和方法,但不包含私有字段,且默认调用父类无参构造函数。为了解决无参构造函数问题,可以通过在父类中添加无参构造函数或子类中使用`base()`显式调用。此外,`protected`关键字允许在类内部和子类中访问成员,而`new`关键字用于隐藏从父类继承的同名成员。
摘要由CSDN通过智能技术生成

应用场景

我们可能会在一些类中,写一些重复的成员,我们可以将这些重复的成员单独的封装到一个类中,作为这些类的父类。
父类又叫基类
子类又叫派生类

继承的特性

  1. 继承的但根性:一个子类只能有一个父类
  2. 继承的传递性:继承可以传递
  • 可以在VS中查看类图去看类之间的关系

子类继承了父类的什么

  1. 子类继承了父类的属性和方法,但没有继承父类的私有字段。
  2. 子类没有继承父类的构造函数,但子类会默认调用父类无参的构造函数,因为目的是创建父类对象,使得子类可以使用父类中的成员。
    所以如果在父类中重新写了一个有参数的构造函数,那个无参的构造函数就没有了,子类调用不到,所以子类会报错。
  • 解决方法
    1)在父类中重新写一个无参数的构造函数。
    2)在子类中显示的调用父类的构造函数,使用关键字:base()
    Person类(父类)
//Person类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _03_继承
{
   
    //父类
    class Person
    {
   
        public Person(string name,int age,char gender)
        {
   
            this.Name = name;
            this.Age = age;
            this.Gender = gender;
        }
        private string _name;

        public string Name {
    get => _name; set => _name = value; }

        private int _age;
        
        public int Age
        {
   
            get {
    return _
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值