C#面向对象(继承)

news/2025/2/2 19:39:09 标签: c#, 开发语言

1.什么是继承

在 C# 编程语言中,继承是一个核心概念,它允许一个类(称为派生类)继承另一个类(称为基类)的成员,如方法、属性和其他成员。继承机制使得代码重用成为可能,简化了应用程序的创建和维护过程。

2.继承的基本概念

继承建立了一个属于(IS-A)关系,例如,狗是哺乳动物,哺乳动物是动物,因此狗也是动物。在 C# 中,继承是通过冒号(:)表示的,派生类在其声明中包含基类的名称

 class Dog
 {
     //基类成员
 }
 class Animal:Dog
 {
     //派生类成员
 }

派生类继承了基类的公共和受保护成员,但私有成员不会被继承。派生类可以有自己的成员,也可以重写基类的成员以提供新的实现

3.继承类的语法格式

派生类:基类

当一个类继承自另一个类的时候,子类将自动拥有父类的成员(成员变量和成员方法)

namespace 继承
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Kitty kitty = new Kitty();
            kitty.All();
            kitty.Sleep();
        }
    }
    //如果一个类没有继承任何类,那么默认他继承object,C#中所有的类,都直接或者间接继承自object,object是所有类的"终极基类"
    class Cat
    {
        public  string name { get; set; }
        public  double weight { get;set; }
        public Cat()
        {
            name = "kitty";
            weight = 5;
        }
        public void Speak()
        {
            Console.WriteLine("喵喵");
        }
        public void Sleep()
        {
            Console.WriteLine("睡觉");
        }
    }
    //Kitty 派生类
    //Cat  基类
    class Kitty:Cat
    {
        public int age {  get; set; }
        public string color {  get; set; }
        public Kitty()
        {
            age = 6;
            color = "橘黄";
        }
        public void Run()
        {
            Console.WriteLine("跑");
        }
        public virtual void All()
        {
            Console.WriteLine("体重:{0}",weight);
            Console.WriteLine("名字{0}",name);
            Console.WriteLine("年龄{0}",age);
            Console.WriteLine("颜色{0}",color);
        }
    }
}

4.继承的限制

C# 不支持多重继承,这意味着一个类只能有一个直接的基类。然而,C# 支持接口的多重继承,允许一个类实现多个接口。

5.继承的注意事项

  • 如果基类有参数化的构造函数,派生类必须显式定义构造函数,并使用 base 关键字调用基类的构造函数。

  • 派生类可以重写基类的方法,但基类的方法必须用 virtual 关键字标记为可重写。

  • 派生类可以添加自己独有的成员和方法,以实现更具体的功能。

继承是 C# 面向对象编程的一个强大特性,它提高了代码的可维护性和可重用性。通过继承,开发者可以构建灵活的类层次结构,使得新的类可以快速地利用现有的代码


http://www.niftyadmin.cn/n/5840247.html

相关文章

独立游戏RPG回顾:高成本

刚看了某纪录片, 内容是rpg项目的回顾。也是这个以钱为核心话题的系列的最后一集。 对这期特别有代入感,因为主角是曾经的同事,曾经在某天晚上听过其项目组的争论。 对其这些年的起伏特别的能体会。 主角是制作人,在访谈中透露这…

构建一个数据分析Agent:提升分析效率的实践

在上一篇文章中,我们讨论了如何构建一个智能客服Agent。今天,我想分享另一个实际项目:如何构建一个数据分析Agent。这个项目源于我们一个金融客户的真实需求 - 提升数据分析效率,加快决策速度。 从分析师的痛点说起 记得和分析师团队交流时的场景: 小张&#xff…

二、CSS笔记

(一)css概述 1、定义 CSS是Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离。 2、要点 怎么找到标签怎么操作标签对象(element) 3、css的四种引入方式 3.1 行内式 在标签的style属性中设定CSS样式。这种方…

移动互联网用户行为习惯哪些变化,对小程序的发展有哪些积极影响

一、碎片化时间利用增加 随着生活节奏的加快,移动互联网用户的碎片化时间越来越多。在等公交、排队、乘坐地铁等间隙,用户更倾向于使用便捷、快速启动的应用来满足即时需求。小程序正好满足了这一需求,无需下载安装,随时可用&…

深度学习模型在汽车自动驾驶领域的应用

汽车自动驾驶是一个高度复杂的系统,深度学习和计算技术在其中扮演核心角色。今天简单介绍一下自动驾驶领域常用的深度学习模型及其计算原理的解析。 1. 深度学习模型分类及应用场景 1.1 视觉感知模型 CNN(卷积神经网络) 应用:图…

PostgreSQL 数据库视图基础操作

视图是 PostgreSQL 中的一种虚拟表,通过一个或多个查询语句生成。视图不实际存储数据,而是存储了一个查询定义,每次查询视图时,都会执行这个查询定义。视图可以用于简化复杂的查询、隐藏某些列或行、实现数据聚合等。定义视图如下…

工作中使用到的单词(软件开发)_第一、二、三版汇总

链接 工作中使用到的单词(软件开发)_像素流 不触发title-CSDN博客 工作中使用到的单词(软件开发)_第二版_ウォークスルー-CSDN博客 工作中使用到的单词(软件开发)_第三版_左詰め-CSDN博客 上面链接的全…

LeetCode:494.目标和

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:494.目标和 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 ‘’ 或 ‘-’ &…