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 

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

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

相关文章

测试理论与方法----测试流程第三个环节:设计测试用例

测试流程第三个环节&#xff1a;设计测试用例&#xff1a;怎么测<——>测试需求的提取&#xff1a;测什么 ### 5、测试用例 描述&#xff1a;测试用例(TestCase)&#xff1a;是一份关于【具体测试步骤】的文档&#xff0c;是为了达到最佳的测试效果或高效揭露软件中潜藏的…

外包干了2个月,技术退步明显了...

先说一下自己的情况&#xff0c;大专生&#xff0c;19年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年8月份&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

【postgresql 基础入门】psql客户端的使用方法

psql 客户端使用 ​专栏内容&#xff1a; postgresql内核源码分析手写数据库toadb并发编程 ​开源贡献&#xff1a; toadb开源库 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xf…

【gtpJavaScript】使用JavaScript实现套壳gtp与gtp打字输出效果

postman测试gtp接口 https://platform.openai.com/docs/api-reference/chat/create?langcurl 导入到postman中 记得弄一个gtp的key 然后请求测试gtp接口&#xff1a; 纯前端实现gtp请求页面 目录结构&#xff1a; 部分参考&#xff1a;GitHub - xxxjkk/chat-website: 简易版c…

【ActiveMQ】Failed to start Apache ActiveMQ (localhost, ID_XXX)

问题描述 使用"bin\win64\activemq.bat"启动apache-activemq-5.18.2出错。 jvm 1 | ERROR | Failed to start Apache ActiveMQ (localhost, ID:) jvm 1 | java.io.IOException: Transport Connector could not be registered in JMX: java.io.IOException: F…

Linux下的系统编程——文件与目录操作(六)

前言&#xff1a; 在Linux系统中&#xff0c;文件和目录的操作非常灵活。用户可以通过命令行或者图形界面来进行操作。下面是Linux文件和目录操作的一些常见操作&#xff1a; 目录 一、文件系统 1.inode 2.dentry 二、文件操作 1.stat/lstat&#xff1a; 2.link/unlink…

OpenCV:实现图像的负片

负片 负片是摄影中会经常接触到的一个词语&#xff0c;在最早的胶卷照片冲印中是指经曝光和显影加工后得到的影像。负片操作在很多图像处理软件中也叫反色&#xff0c;其明暗与原图像相反&#xff0c;其色彩则为原图像的补色。例如&#xff0c;颜色值A与颜色值B互为补色&#…

2.5 PE结构:导入表详细解析

导入表&#xff08;Import Table&#xff09;是Windows可执行文件中的一部分&#xff0c;它记录了程序所需调用的外部函数&#xff08;或API&#xff09;的名称&#xff0c;以及这些函数在哪些动态链接库&#xff08;DLL&#xff09;中可以找到。在Win32编程中我们会经常用到导…

【MySQL】MySQL 慢SQL如何避险

我们在日常开发中&#xff0c;一定遇见过某些SQL执行较慢的情况&#xff0c;我们俗称“慢SQL”&#xff0c;如果你对系统的接口性能要求较高的话&#xff0c;一定不会放过这种SQL&#xff0c;肯定会想办法进行解决&#xff0c;那么&#xff0c;导致慢 SQL 出现的原因&#xff0…

ref 操作 React 定时器

秒表 需要将 interval ID 保存在 ref 中&#xff0c;以便在需要时能够清除计时器。 import { useRef, useState } from "react";const SecondWatch () > {const [startTime, setStartTime] useState<any>(null);const [now, setNow] useState<any>…

【python爬虫】9.带着小饼干登录(cookies)

文章目录 前言项目&#xff1a;发表博客评论post请求 cookies及其用法session及其用法存储cookies读取cookies复习 前言 第1-8关我们学习的是爬虫最为基础的知识&#xff0c;从第9关开始&#xff0c;我们正式打开爬虫的进阶之门&#xff0c;学习爬虫更多的精进知识。 在前面几…

SpringBoot整合Jpa实现增删改查功能(提供Gitee源码)

前言&#xff1a;在日常开发中&#xff0c;总是撰写一些简单的SQL会非常耗时间&#xff0c;Jpa可以完美的帮我们提高开发的效率&#xff0c;对于常规的SQL不需要我们自己撰写&#xff0c;相对于MyBatis有着更简单易用的功能&#xff0c;但是MyBatis自由度相对于Jpa会更高一些&a…

树形结构的节点作为查询参数业务

1、业务描述 有一个树结构&#xff0c;存在一个唯一的code和一个父节点的pcode&#xff0c;要求前端传入任意层的code匹配这个code对应的所有子节点对应的数据。 2、解决思路 因为无法判定传入的code到底在那层&#xff0c;so 直接递归调用查询判断&#xff0c;如果有子节点就…

unity 之 如何获取父物体与子物体

文章目录 获取父物体获取子物体 获取父物体 在Unity中&#xff0c;你可以使用Transform组件的属性来获取对象的父物体。以下是在C#脚本中如何获取父物体的示例代码&#xff1a; using UnityEngine;public class GetParentExample : MonoBehaviour {void Start(){// 获取当前物…

【OpenCV实战】4.OpenCV 五种滤波使用实战(均值、盒状、中值、高斯、双边)

OpenCV 五种滤波使用实战(均值、盒状、中值、高斯、双边&#xff09; 〇、Coding实战内容一、滤波、核和卷积1.1 滤波1.2 核 & 滤波器1.3 公式1.4 例子 二、图片边界填充实战2.1 解决问题2.2 相关OpenCV函数2.3 Code 三. 均值滤波实战3.1 理论3.2 Blur3.3 Code 四. 盒状滤波…

南方科技大学博士研究生奖助学金,深圳大学

目录 南方科技大学 中南大学 南京大学 厦门大学 苏州大学 中南财经政法大学 深圳大学 南方科技大学 https://ocean.sustech.edu.cn/ocean/public/upload/download/3/2.pdf 南方科技大学的在读研究生&#xff0c;每人每年都会得到40000元的补助&#xff0c;这40000块钱分…

DP读书:鲲鹏处理器 架构与编程(十二)鲲鹏软件实战案例Docker+KVM的部署

10min速通了解鲲鹏软件实战案例 云服务器源码移植与编译配置云服务器Porting Advisor代码移植搭建交叉编译环境x86云服务器交叉编译 OpenSSL鲲鹏云服务器上编译 OpenSSL Docker的安装与应用安装DockerDocker运行与验证Docker常用命令卸载Docker安装适配鲲鹏架构的Docker镜像 KV…

C语言模拟最简单的计算机

C语言模拟最简单的计算机 以下内容参考南大“计算机系统基础”实验&#xff1a;不停计算的机器 概述 如下面的伪代码所示&#xff0c;计算机运行程序的过程为取指令–>运行指令–>更新PC的值。 while (1) {从PC指示的存储器位置取出指令;执行指令;更新PC; }取指(inst…

Flink中RPC实现原理简介

前提知识 Akka是一套可扩展、弹性和快速的系统&#xff0c;为此Flink基于Akka实现了一套内部的RPC通信框架&#xff1b;为此先对Akka进行了解 Akka Akka是使用Scala语言编写的库&#xff0c;基于Actor模型提供一个用于构建可扩展、弹性、快速响应的系统&#xff1b;并被应用…

3 | Java Spark 配置和 数据筛选

下面将演示如何使用 Apache Spark 的 Java API 来加载数据、筛选出偶数,并计算它们的总和。Apache Spark 是一个强大的分布式计算框架,适用于大规模数据处理任务。 创建 Maven 项目 首先,我们需要创建一个 Maven 项目,以便管理依赖项。在项目的 pom.xml 文件中添加以下 S…