当前位置: 首页 > news >正文

C# 类class、继承、多态性、运算符重载,相关练习题

34.函数重载

/*函数重载您可以在同一个范围内对相同的函数名有多个定义。函数的定义必须彼此不同,可以是参数列表中的参数类型不同,也可以是参数个数不同。不能重载只有返回类型不同的函数声明。下面的实例演示了几个相同的函数 Add(),用于对不同个数参数进行相加处理:
*/using System;
namespace PolymorphismApplication
{public class TestData{public int Add(int a, int b, int c){return a + b + c;}public int Add(int a, int b){return a + b;}}class Program{static void Main(string[] args){TestData dataClass = new TestData();int add1 = dataClass.Add(1, 2);int add2 = dataClass.Add(1, 2, 3);Console.WriteLine("add1 :" + add1);Console.WriteLine("add2 :" + add2);}}
}

35.几个相同的函数 print(),用于打印不同的数据类型。

using System;
namespace PolymorphismApplication
{class Printdata{void print(int i){Console.WriteLine("输出整型: {0}", i );}void print(double f){Console.WriteLine("输出浮点型: {0}" , f);}void print(string s){Console.WriteLine("输出字符串: {0}", s);}static void Main(string[] args){Printdata p = new Printdata();// 调用 print 来打印整数p.print(1);// 调用 print 来打印浮点数p.print(1.23);// 调用 print 来打印字符串p.print("Hello Runoob");Console.ReadKey();}}
}

 

36.基类和派生类

using System;
namespace InheritanceApplication
{class Shape{public void setWidth(int w){width = w;}public void setHeight(int h){height = h;}protected int width;protected int height;}// 派生类class Rectangle : Shape{public int getArea(){	return (width * height);}}class RectangleTester{static void Main(string[] args){Rectangle Rect = new Rectangle();Rect.setWidth(5);Rect.setHeight(7);// 打印对象的面积Console.WriteLine("总面积: {0}", Rect.getArea());Console.ReadKey();}}
}

 

37.基类的初始化

using System;
namespace RectangleApplication
{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(4.5, 7.5);t.Display();Console.ReadLine();}}
}

 

38.多重继承

/*
如果一个类使用protected修饰符来声明一个成员,
那么只有在该类和其派生类中才能访问该成员。
*/
using System;
namespace InheritanceApplication
{class Shape {public void setWidth(int w){width = w;}public void setHeight(int h){height = h;}protected int width;protected int height;}// 基类 PaintCostpublic interface PaintCost {int getCost(int area);}// 派生类class Rectangle : Shape, PaintCost{public int getArea(){return (width * height);}public int getCost(int area){return area * 70;}}class RectangleTester{static void Main(string[] args){Rectangle Rect = new Rectangle();int area;Rect.setWidth(5);Rect.setHeight(7);area = Rect.getArea();// 打印对象的面积Console.WriteLine("总面积: {0}",  Rect.getArea());Console.WriteLine("油漆总成本: ${0}" , Rect.getCost(area));Console.ReadKey();}}
}

 

39.动态多态性

using System;
namespace PolymorphismApplication
{abstract class Shape{abstract public int area();}class Rectangle:  Shape{private int length;private int width;public Rectangle( int a=0, int b=0){length = a;width = b;}public override int area (){ Console.WriteLine("Rectangle 类的面积:");return (width * length); }}class RectangleTester{static void Main(string[] args){Rectangle r = new Rectangle(10, 7);double a = r.area();Console.WriteLine("面积: {0}",a);Console.ReadKey();}}
}

 

40.抽象性和虚方法

using System;
using System.Collections.Generic;public class Shape
{public int X { get; private set; }public int Y { get; private set; }public int Height { get; set; }public int Width { get; set; }// 虚方法public virtual void Draw(){Console.WriteLine("执行基类的画图任务");}
}class Circle : Shape
{public override void Draw(){Console.WriteLine("画一个圆形");base.Draw();}
}
class Rectangle : Shape
{public override void Draw(){Console.WriteLine("画一个长方形");base.Draw();}
}
class Triangle : Shape
{public override void Draw(){Console.WriteLine("画一个三角形");base.Draw();}
}class Program
{static void Main(string[] args){// 创建一个 List<Shape> 对象,并向该对象添加 Circle、Triangle 和 Rectanglevar shapes = new List<Shape>{new Rectangle(),new Triangle(),new Circle()};// 使用 foreach 循环对该列表的派生类进行循环访问,并对其中的每个 Shape 对象调用 Draw 方法 foreach (var shape in shapes){shape.Draw();}Console.WriteLine("按下任意键退出。");Console.ReadKey();}}

 

41.通过虚方法 area() 来计算不同形状图像的面积

/*
*这是一个使用C#语言实现的面向对象编程(OOP)的例子,
主要展示了多态性(通过继承和重写)和封装(通过使用访问修饰符)。分析代码:
Shape 是一个基类,它有一个保护的成员变量 width 和 height(用于定义形状的宽度和高度),
以及一个带两个默认值为0的整型参数的构造函数。这个构造函数初始化 width 和 height。
Shape 类还定义了一个公共的虚方法 area(),该方法返回形状的面积。这个方法在子类中被重写。
Rectangle 和 Triangle 类都继承自 Shape 类,并重写了 area() 方法。
Rectangle 的面积是宽度乘以高度,而 Triangle 的面积是宽度乘以高度的一半。
Caller 类有一个方法 CallArea(),它接受一个 Shape 类型的参数,并调用该参数的 area() 方法。
Tester 类的 Main() 方法创建了一个 Caller 对象和一个 Rectangle 对象以及一个 Triangle 对象。
然后,它调用 Caller 对象的 CallArea() 方法两次,分别传入 Rectangle 和 Triangle 对象。
这两次调用都会打印出相应形状的面积。
所以,当你运行这个程序时,它会首先打印出 "父类的面积:",
然后打印出 "Rectangle 类的面积:" 和 "Triangle 类的面积:",
最后打印出这两个形状的面积。
*/using System;
namespace PolymorphismApplication
{class Shape {protected int width, height;public Shape( int a=0, int b=0){//在这里实现基类的初始化代码width = a;height = b;}public virtual int area(){Console.WriteLine("父类的面积:");return 0;}}class Rectangle: Shape{public Rectangle( int a=0, int b=0): base(a, b){//在这里实现Rectangle类的初始化代码}public override int area (){Console.WriteLine("Rectangle 类的面积:");return (width * height); }}class Triangle: Shape{public Triangle(int a = 0, int b = 0): base(a, b){}public override int area(){Console.WriteLine("Triangle 类的面积:");return (width * height / 2); }}class Caller{public void CallArea(Shape sh){int a;a = sh.area();Console.WriteLine("面积: {0}", a);}}  class Tester{static void Main(string[] args){Caller c = new Caller();Rectangle r = new Rectangle(10, 7);Triangle t = new Triangle(10, 5);c.CallArea(r);c.CallArea(t);Console.ReadKey();}}
}

 

42.运算符重载的实现

/*运算符重载的实现
*/
using System;namespace OperatorOvlApplication
{class Box{private double length;      // 长度private double breadth;     // 宽度private double height;      // 高度public double getVolume(){return length * breadth * height;}public void setLength( double len ){length = len;}public void setBreadth( double bre ){breadth = bre;}public void setHeight( double hei ){height = hei;}// 重载 + 运算符来把两个 Box 对象相加public static Box operator+ (Box b, Box c){Box box = new Box();box.length = b.length + c.length;box.breadth = b.breadth + c.breadth;box.height = b.height + c.height;return box;}}class Tester{static void Main(string[] args){Box Box1 = new Box();         // 声明 Box1,类型为 BoxBox Box2 = new Box();         // 声明 Box2,类型为 BoxBox Box3 = new Box();         // 声明 Box3,类型为 Boxdouble volume = 0.0;          // 体积// Box1 详述Box1.setLength(6.0);Box1.setBreadth(7.0);Box1.setHeight(5.0);// Box2 详述Box2.setLength(12.0);Box2.setBreadth(13.0);Box2.setHeight(10.0);// Box1 的体积volume = Box1.getVolume();Console.WriteLine("Box1 的体积: {0}", volume);// Box2 的体积volume = Box2.getVolume();Console.WriteLine("Box2 的体积: {0}", volume);// 把两个对象相加Box3 = Box1 + Box2;// Box3 的体积volume = Box3.getVolume();Console.WriteLine("Box3 的体积: {0}", volume);Console.ReadKey();}}
}

 

@www.runoob.com 

相关文章:

C# 类class、继承、多态性、运算符重载,相关练习题

34.函数重载 /*函数重载您可以在同一个范围内对相同的函数名有多个定义。函数的定义必须彼此不同&#xff0c;可以是参数列表中的参数类型不同&#xff0c;也可以是参数个数不同。不能重载只有返回类型不同的函数声明。下面的实例演示了几个相同的函数 Add()&#xff0c;用于对…...

Mysql高级(进阶)SQL语句

目录 常用查询 按关键字排序 区间判断及查询不重复记录 对结果进行分组 限制结果条目 设置别名&#xff08;alias —— as&#xff09; 通配符 子查询 MySQL视图 NULL 值 连接查询 常用查询 &#xff08;增、删、改、查&#xff09; 对 MySQL 数据库的查询&#xf…...

java八股文面试[JVM]——JVM性能优化

JVM性能优化指南 JVM常用命令 jps 查看java进程 The jps command lists the instrumented Java HotSpot VMs on the target system. The command is limited to reporting information on JVMs for which it has the access permissions. jinfo &#xff08;1&#xff09;实时…...

联发科MTK6762/MT6762核心板_安卓主板小尺寸低功耗4G智能模块

MT6762安卓核心板是一款基于MTK平台的高性能智能模块&#xff0c;是一款工业级的产品。该芯片也被称为Helio P22。这款芯片内置了Arm Cortex-A53 CPU&#xff0c;最高可运行于2.0GHz。同时&#xff0c;它还提供灵活的LPDDR3/LPDDR4x内存控制器&#xff0c;此外&#xff0c;Medi…...

Redis未授权访问漏洞复现

Redis 简单使用 Redis 未设置密码&#xff0c;客户端工具可以直接链接。 Redis 是非关系型数据库系统&#xff0c;没有库表列的逻辑结构&#xff0c;仅仅以键值对的方式存储数据。 先启动容器 Redis 未设置密码&#xff0c;客户端工具可以直接链接 https://github.com/xk11z/…...

用深度强化学习来玩Flappy Bird

目录 演示视频 核心代码 演示视频 用深度强化学习来玩Flappy Bird 核心代码 import torch.nn as nnclass DeepQNetwork(nn.Module):def __init__(self):super(DeepQNetwork, self).__init__()self.conv1 nn.Sequential(nn.Conv2d(4, 32, kernel_size8, stride4), nn.ReLU(inp…...

HTML5-4-表单

文章目录 表单属性表单标签输入元素文本域&#xff08;Text Fields&#xff09;密码字段单选按钮&#xff08;Radio Buttons&#xff09;复选框&#xff08;Checkboxes&#xff09;按钮&#xff08;button&#xff09;提交按钮(Submit)label标签 文本框&#xff08;textarea&am…...

Nacos 开源版的使用测评

文章目录 一、Nacos的使用二、Nacos和Eureka在性能、功能、控制台体验、上下游生态和社区体验的对比&#xff1a;三、记使使用Nacos中容易犯的错误四、对Nacos开源提出的一些需求 一、Nacos的使用 这里配置mysql的连接方式&#xff0c;spring.datasource.platformmysql是老版本…...

【Linux】一些常见查看各种各样信息的命令

Linux命令 find命令&#xff0c;用来查找文件。常用的按照名字查找-name&#xff0c;按照文件类型查找-type&#xff0c;linux常用的文件类型有七种&#xff0c;普通文件&#xff0c;目录文件&#xff0c;管道&#xff0c;套接字&#xff0c;软链接&#xff0c;块设备&#xf…...

51单片机DHT11温湿度控制系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

51单片机DHT11温湿度控制系统仿真设计 1.主要功能&#xff1a;2.仿真3. 程序代码4. 原理图元器件清单5. 设计报告6. 设计资料内容清单&下载链接 51单片机DHT11温湿度控制系统仿真设计( proteus仿真程序原理图报告讲解视频&#xff09; 仿真图proteus8.9及以上 程序编译器&…...

神仙级python入门教程(非常详细),从0到精通,从看这篇开始!

毫无疑问&#xff0c;Python 是当下最火的编程语言之一。对于许多未曾涉足计算机编程的领域「小白」来说&#xff0c;深入地掌握 Python 看似是一件十分困难的事。其实&#xff0c;只要掌握了科学的学习方法并制定了合理的学习计划&#xff0c;Python 从 入门到精通只需要一个月…...

详解4种类型的爬虫技术

聚焦网络爬虫是“面向特定主题需求”的一种爬虫程序&#xff0c;而通用网络爬虫则是捜索引擎抓取系统&#xff08;Baidu、Google、Yahoo等&#xff09;的重要组成部分&#xff0c;主要目的是将互联网上的网页下载到本地&#xff0c;形成一个互联网内容的镜像备份。 增量抓取意…...

QTday1基础

作业 一、做个QT页面 #include "hqyj.h"HQYJ::HQYJ(QWidget *parent)//构造函数定义: QWidget(parent)//显性调用父类的有参构造 {//主界面设置this->resize(540,410);//设置大小this->setFixedSize(540,410);//设置固定大小this->setWindowIcon(QIcon(&q…...

activiti 通过xml上传 直接部署模型

通过流程xml 直接先发布模型&#xff0c;然后再通过发布模型之后的流程定义获取bpmn model来创建Model. 1、通过xml先发布模型 InputStream bpmnStream multipartFile.getInputStream() deployment repositoryService.createDeployment().addInputStream(multipartFile.getO…...

算法题打卡day56-编辑距离 | 583. 两个字符串的删除操作、72. 编辑距离

583. 两个字符串的删除操作 - 力扣&#xff08;LeetCode&#xff09; 状态&#xff1a;查看思路后AC。 和查找子序列的操作类似&#xff0c;但是考虑的是删除操作。代码如下&#xff1a; class Solution { public:int minDistance(string word1, string word2) {int len1 wor…...

SQL中的CASE WHEN语句:从基础到高级应用指南

SQL中的CASE WHEN语句&#xff1a;从基础到高级应用指南 准备工作 - 表1: products 示例数据&#xff1a; 我们使用一个名为"Products"的表&#xff0c;包含以下列&#xff1a;ProductID、ProductName、CategoryID、UnitPrice、StockQuantity。 -- 建表 CREATE TA…...

超时取消子线程任务

文章目录 前言一、编码思路二、使用步骤直接上代码 总结 前言 问题背景: 主线程需要执行一些任务,不能影响主任务执行,这些任务有超时时间,当超过处理时间后,应该不予处理;如果未超时,应该获取到这些任务的执行结果; 一、编码思路 由于主线程正常执行不能影响,任务会处理很久…...

模块化---common.js

入口文件&#xff1a;app.js // require是同步加载 // 客户端&#xff1a;common.js的模块化&#xff0c;需要browserify编译之后才能使用 // 服务端&#xff1a;运行时同步加载&#xff0c;无问题 let module1 require(./module1.js) let module2 require(./module2.js) co…...

VSCode下载、安装及配置、调试的一些过程理解

第一步先下载了vscode&#xff0c;官方地址为&#xff1a;https://code.visualstudio.com/Download 第二步安装vscode&#xff0c;安装环境是win10&#xff0c;安装基本上就是一步步默认即可。 第三步汉化vscode&#xff0c;这一步就是去扩展插件里面下载一个中文插件即可&am…...

KC705开发板——MGT IBERT测试记录

本文介绍使用KC705开发板进行MGT的IBERT测试。 KC705开发板 KC705开发板的图片如下图所示。FPGA芯片型号为XC7K325T-2FFG900C。 MGT MGT是 Multi-Gigabit Transceiver的缩写&#xff0c;是Multi-Gigabit Serializer/Deserializer (SERDES)的别称。MGT包含GTP、GTX、GTH、G…...

基于九轴传感器 + K-means 聚类的振动异常检测实战教程

&#xff08;嵌入式 / 工业监测场景&#xff1a;设备振动、电机故障、结构松动、碰撞异常实时检测&#xff09;一、前言&#xff08;你能学到什么&#xff09;这篇文章不讲虚的&#xff0c;直接带你做一个工业级轻量异常检测系统&#xff1a;用 LSM6DS3TR-C&#xff08;6 轴&am…...

破解厂区防控难题:远程控制联网报警器的技术优势与应用实践

一、厂区安全防控的时代挑战与技术革新在工业生产规模化、厂区安全管理标准化的发展趋势下&#xff0c;厂区安全防控已成为企业生产运营的核心工作。我国正处于厂区安防从 "人工巡检为主" 向 "技防联动" 转型的关键阶段&#xff0c;据行业数据显示&#xf…...

AI生成教材新玩法,低查重让你的教材更有竞争力!

教材的格式问题常常让编写者感到困惑。比如&#xff0c;标题应该选择多大字号&#xff1f;参考文献是依据GB/T7714还是按照某些出版机构的标准&#xff1f;习题的排版又应选择单栏还是双栏&#xff1f;各种不同的要求让人感到眼花缭乱&#xff0c;而手动调整不仅耗时费力&#…...

专题:哈希结构(已完结)

1.有效的字母异位词 class Solution { public:bool isAnagram(string s, string t) {unordered_map<char,int> mymap;for(auto c:s){mymap[c]mymap[c]1;}for(auto c:t){mymap[c]mymap[c]-1;}for(auto item:mymap){if(item.second!0){return false;}}return true;} };2.两…...

终极指南:CSS解析器与PostCSS插件开发完全手册

终极指南&#xff1a;CSS解析器与PostCSS插件开发完全手册 【免费下载链接】awesome-css :art: A curated contents of amazing CSS :) 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-css GitHub 加速计划 / aw / awesome-css 项目是一个精心策划的 CSS 资源集合…...

Docker 快速通关

一、Docker 大致介绍 Docker 可以帮助我们完成应用的 运行&#xff08;run&#xff09;、构建&#xff08;build&#xff09; 和 分享&#xff08;share&#xff09;。 它的核心目标很简单&#xff1a; 把应用和环境打包起来让应用在不同机器上尽量保持一致方便部署、迁移和…...

终极指南:Linkerd与Rancher集成的完整实践方案

终极指南&#xff1a;Linkerd与Rancher集成的完整实践方案 【免费下载链接】linkerd Old repo for Linkerd 1.x. See the linkerd2 repo for Linkerd 2.x. 项目地址: https://gitcode.com/gh_mirrors/li/linkerd Linkerd作为一款强大的服务网格工具&#xff0c;与Ranche…...

FALCON: Fast Autonomous Aerial ExplorationUsing Coverage Path Guidance(覆盖路径引导的快速自主空中探索)

创新点&#xff1a;提出一种基于连接性的增量式空间分解和连接图构造方法&#xff0c;捕获环境拓扑并促进有效的探测覆盖路径规划提出一种分层的探索规划方法&#xff0c;生成合理的覆盖路径作为全局指导&#xff0c;并优化局部边界访问顺序&#xff0c;保持覆盖路径的意图。提…...

测试计划详细说明

一份高质量的测试计划本质上是质量风险的防御蓝图&#xff0c;它要在有限资源和无限质量诉求之间找到平衡点。我将从结构、内容、决策逻辑三个维度展开&#xff0c;并提供一个可直接落地的框架。一、测试计划的核心定位测试计划的本质回答三个问题&#xff1a;测什么&#xff1…...

基于朴素贝叶斯分类算法的收入预测:Python 数据挖掘项目实战

数据挖掘项目python--基于朴素贝叶斯分类算法的收入预测 项目流程&#xff1a;数据分析训练朴素贝叶斯分类器两个方案实现&#xff08;pycharmjupyter&#xff09; 包含内容&#xff1a;数据集代码&#xff08;pycharmjupyter&#xff09;文档在数据挖掘领域&#xff0c;预测任…...