C# 中继承的说明

news2024/10/8 11:43:39

一.继承的相关概念说明

继承是面向对象程序设计中最重要的概念之一,允许我们根据一个类来定义另一个新类,从而使得创建和维护应用程序时就变得更容易,同时也有利于重用代码和节省开发时间。

当创建一个类时,不需要完全重新编写新的数据成员和成员函数,只需要设计一个新的类,继承了已有的类的成员即可,这时已有的类被称为的基类,这个新构建的类被称为派生类

二.基类和派生类

一个类可以继承自另一个类,也就是基类(父类)和派生类(子类)。C# 不支持类的多重继承,但支持接口的多重继承,一个类可以实现多个接口。

概括来说:一个类可以继承多个接口,但只能继承自一个类,创建派生类的语法如下:

 <访问修饰符> class <基类>
{
 ...
}
class <派生类> : <基类>
{
 ...
}

 注:派生类会继承基类的成员(字段、方法、属性等),除非它们被明确地标记为私有(private)。

派生类可以通过关键字base来调用基类的构造函数和方法。

class BaseClass
{
    public void SomeMethod()
    {
        // 执行方法代码块
    }
}

class DerivedClass : BaseClass
{
    public void AnotherMethod()
    {
        // 执行方法代码块
        base.SomeMethod();       
    }
}

三.基类的初始化

派生类继承了基类的成员变量和成员方法,因此父类对象会在子类对象创建之前被创建,也可以在成员初始化列表中进行父类的初始化。

   class Rectangle
   {
      // 成员变量
      protected double length;
      protected double width;
      public Rectangle(double l, double w)
      {
         length = l;
         width = w;
      }
      public double GetArea()
      {
         return length * width;
      }
      public void Display()
      {
         Console.WriteLine("长度: {0}", length);
         Console.WriteLine("宽度: {0}", width);
         Console.WriteLine("面积: {0}", GetArea());
      }
   }//end class Rectangle  
   class Tabletop : Rectangle
   {
      private double cost;
      public Tabletop(double l, double w) : base(l, w)
      { }
      public double GetCost()
      {
         double cost;
         cost = GetArea() * 70;
         return cost;
      }
      public void Display()
      {
         base.Display();
         Console.WriteLine("成本: {0}", GetCost());
      }
   }
   class ExecuteRectangle
   {
      static void Main(string[] args)
      {
         Tabletop t = new Tabletop(0.5, 0.7);
         t.Display();
         Console.ReadLine();
      }
   }

四.继承接口(Interface Inheritance)

一个接口可以继承自一个或多个其他接口,派生接口继承了基接口的所有成员,派生接口可以扩展基接口的成员列表,但不能改变它们的访问修饰符。

interface IBaseInterface
{
    void Method1();
}

interface IDerivedInterface : IBaseInterface
{
    void Method2();
}

五.C# 中的多重继承

多重继承指的是一个类别可以同时从多于一个父类继承行为与特征的功能,与单一继承相对,单一继承指一个类别只可以继承自一个父类。C# 不支持多重继承,但是可以使用接口来实现多重继承。

 class Shape
   {
      public void setWidth(int w)
      {
         width = w;
      }
      public void setHeight(int h)
      {
         height = h;
      }
      protected int width;
      protected int height;
   }

   // 基类 PaintCost
   public interface PaintCost
   {
      int getCost(int area);

   }
   // 派生类
   class Rectangle : Shape, PaintCost
   {
      public int getArea()
      {
         return (width * height);
      }
      public int getCost(int area)
      {
         return area * 10;
      }
   }
   class RectangleTester
   {
      static void Main(string[] args)
      {
         Rectangle Rect = new Rectangle();
         int area;
         Rect.setWidth(10);
         Rect.setHeight(15);
         area = Rect.getArea();
         // 打印对象的面积
         Console.WriteLine("总面积: {0}",  Rect.getArea());
         Console.WriteLine("油漆总成本: ${0}" , Rect.getCost(area));
         Console.ReadKey();
      }
   }

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2196269.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Golang反射解说

在Go语言中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时检查、修改和操作变量的类型信息。 反射主要用于处理那些在编译时无法确定类型的情况&#xff0c;比如处理接口类型的值、实现通用的函数等。 Go语言中反射的基本…

OpenAI 旧金山开发者大会发布五大创新功能 实时语音、视觉微调、模型蒸馏

在10月1日的 OpenAI 旧金山开发者大会&#xff08; DevDay&#xff09; 上 。OpenAI 公布了五项重大创新&#xff0c;其中“实时 API”&#xff08;Realtime API&#xff09;的新功能&#xff0c;使得开发者能够创建具有低延迟、AI 生成的语音响应功能的应用程序。尽管这一功能…

C++ | Leetcode C++题解之第461题汉明距离

题目&#xff1a; 题解&#xff1a; class Solution { public:int hammingDistance(int x, int y) {int s x ^ y, ret 0;while (s) {s & s - 1;ret;}return ret;} };

MySQL 篇-深入了解视图、SQL 优化(主键优化、order by 优化、group by 优化、update 优化等)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 SQL 优化 1.1 SQL 优化 - 插入数据 1.2 SQL 优化 - 主键优化 1.2.1 页分裂 1.2.2 页合并 1.2.3 主键设计原则 1.3 SQL 优化 - order by 优化 1.3.1 单字段排序 1.…

JS设计模式之职责链模式:优雅地处理请求流程

一. 前言 在前端开发中&#xff0c;我们经常会遇到需要按照一定的顺序处理一系列请求或操作的情况&#xff0c;如果将每一步处理都硬编码在一起&#xff0c;会导致代码臃肿&#xff0c;可维护性和可扩展性都会大大降低。而职责链模式恰好提供了一种优雅的解决方案。 无论你是…

Python进阶--正则表达式

目录 1. 基础匹配 2. 元字符匹配 1. 基础匹配 正则表达式&#xff0c;又称规则表达式&#xff08;Regular Expression&#xff09;&#xff0c;是使用单个字符串来描述、匹配某个句法规则的字符串&#xff0c;常被用来检索、替换那些符合某个模式&#xff08;规则&#xff…

HyperBDR云容灾“轻装上阵”,露脸魔都写字楼!

回顾今年828&#xff0c;万博智云作为铂金合作伙伴在仪式上惊艳亮相&#xff0c;同时还参与了华为云“云上大咖团”的直播分享&#xff0c;公司明星产品HyperBDR云容灾成功上线了828企业应用一站购平台。就在近日&#xff0c;后续来啦&#xff01; 一、HyperBDR云容灾楼宇广告…

特斯拉的TTPoE协议到底是啥?比TCP/IP快n倍?真的假的…

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 上午好&#xff0c;我的网工朋友 最近&#xff0c;在备受瞩目的Hot Chips大会上&#xff0c;特斯拉不仅展示了其最新的DOJO超级计算机项目&#…

叉车AI行人防撞预警系统,提升作业安全与效率

如今&#xff0c;发展飞快的工业蓝海中&#xff0c;叉车作为物流仓储与制造业不可或缺的搬运工具&#xff0c;其安全性一直是行业内外关注的焦点。随着人工智能技术的日益成熟&#xff0c;工业&#xff08;车辆&#xff09;叉车AI行人防撞预警系统解决方案应运而生&#xff0c;…

零基础入门AI大模型应用开发,你需要一个系统的学习路径!

前言 随着人工智能技术的迅猛发展&#xff0c;特别是在大型语言模型&#xff08;LLMs&#xff09;领域的突破&#xff0c;AI大模型已经成为当今科技领域的热门话题。不论是对于希望转型进入AI行业的职场人士&#xff0c;还是对未来充满憧憬的学生&#xff0c;掌握AI大模型的应…

JS 介绍/书写位置/输入输出语法

目录 1. JS 介绍 1.1 JS 是什么 1.2 JS 的作用 1.3 JS 的组成 2. JS 书写位置 2.1 内部 JS 2.2 外部 JS 2.3 内联 JS 3. JS 注释和结束符 4. JS 输入输出语法 4.1 输入语法 4.2 输入语句 4.3 执行顺序 5. 字面量 1. JS 介绍 1.1 JS 是什么 1.2 JS 的作用 1.3 JS …

上海AI Lab视频生成大模型书生.筑梦环境搭建推理测试

引子 最近视频生成大模型层出不穷&#xff0c;上海AI Lab推出新一代视频生成大模型 “书生・筑梦 2.0”(Vchitect 2.0)。根据官方介绍&#xff0c;书生・筑梦 2.0 是集文生视频、图生视频、插帧超分、训练系统一体化的视频生成大模型。OK&#xff0c;那就让我们开始吧。 一、模…

国产长芯微LPQ9008菊花链接口的18单元电池监控器完全P2P替代ADBMS1818

描述 LPQ9008是一款多单元电池堆监控器&#xff0c;可测量多达18个串联连接的电池单元&#xff0c;总测量误差小于3.0 mV。LPQ9008具有0 V至5 V的电池测量范围&#xff0c;适合大多数电池化学应用。可在290 μs内测量所有18个电池单元&#xff0c;并选择较低的数据采集速率以便…

24.10.7(线段树合并,分裂,扫描线,字符串哈希)

星期一&#xff1a; 昨晚熬夜场的div2总算是不负有心人&#xff0c;到C都比较简单&#xff0c;出C后我也没有run的想法&#xff0c;一直在看D&#xff0c;最后5min的时间ac&#xff0c;小小上了波分 贴cf round976 div2 D cf传送门 题意&a…

从学习Java到学习AI大模型,我为什么选择的后者???

我为什么从Java转到AI大模型 在编程的海洋里&#xff0c;Java一直是我信赖的“小船”&#xff0c;载着我航行在代码的世界中。然而&#xff0c;随着行业的不断发展和变化&#xff0c;我开始感受到了一丝的迷茫和不安。我开始担心&#xff0c;随着技术的不断更新&#xff0c;Ja…

银河麒麟桌面操作系统V10 SP1:取消安装应用的安全授权认证

银河麒麟桌面操作系统V10 SP1&#xff1a;取消安装应用的安全授权认证 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 使用银河麒麟V10 SP1安装应用时&#xff0c;若频繁遇到安全授权认证提示&#xff0c;可按以下步骤设置&#xff1a; 打开…

操作系统 | 学习笔记 | 王道 | 4.3 文件系统

4.3 文件系统 4.3.1 文件系统结构 文件系统(File system)提供高效和便捷的磁盘访问&#xff0c;以便允许存储、定位、提取数据。 用一个例子来辅助记忆文件系统的层次结构&#xff1a; 假设某用户请求删除文件"D:/工作目录/学生信息.xIsx"的最后100条记录。 用户需…

Linux——磁盘分区、挂载

Linux 分区 原理介绍 原理图如下 当我们在/home目录下新建一个文件a.txt时&#xff0c;该文件实际上是存放在硬盘B的分区1中的&#xff0c;这就是图里说的&#xff0c;当进入某个目录&#xff0c;可以进入到该目录下挂载的分区里的意思 硬盘说明 应用实例&#xff1a;挂载一个…

镁稀土中间合金的耐腐蚀性

镁稀土中间合金&#xff0c;也称作镁稀土合金&#xff0c;是一种重要的合金材料&#xff0c;由镁、稀土元素(如镧、铈、镨、钕、钷、钐、铕、钆、铽、镝、钬、铒、镱、镥等)以及其他可能的金属元素(如铝、锶、锆、钙等)组成。以下是对镁稀土中间合金的详细介绍&#xff1a; 一、…

六、索引的数据结构

文章目录 1. 为什么使用索引2. 索引及其优缺点2.1 索引概述2.2 优点2.3 缺点3. InnoDB中索引的推演3.1 索引之前的查找3.1.1 在一个页中的查找3.1.2 在很多页中查找3.2 设计索引3.2.1 一个简单的索引设计方案3.2.2 InnoDB中的索引方案3.3 常见索引概念3.3.1 聚簇索引3.3.2 二级…