C#面向对象程序设计课程实验五:实验名称:C#面向对象技术

简介: C#面向对象程序设计课程实验五:实验名称:C#面向对象技术

5bb71a4b28a64495b7e52595be8a14dd.jpg

实验内容:C#面向对象技术


18031e646f0149c28d149dd17b4f667b.jpg


一、 实验目的及要求


  • (1)掌握类的继承特性;
  • (2)学会使用 C#实现类的继承性;
  • (3) 理解类的多态特性;
  • (4)学会使用 C#的方法重写;


二、实验环境


Microsoft Visual Studio 2008


三、实验内容与步骤


3.1、实验内容:测试类,实现多态


实验内容:测试类,实现多态的内容如下所示


定义一个名为 Vehicles 的基类,代表交通工具。该类中应包含 string 类型的属性 Brand 表示商标,Color 表示颜色。还应包含 Run(行驶,在控制台显示“我已经开动了”)和虚 方法 ShowInfo(显示信息,在控制台显示商标和颜色),并编写构造方法初始化其属性。 编写 Car(小汽车)类继承于 Vehicles 类,增加 int 型属性 Seats(座位),还应重写成员方法 ShowInfo(在控制台显示小汽车的信息),并编写构造方法。编写 Truck(卡车)类继承于 Vehicles 类,增加 float 型成员属性 Load(重载),还应重写成员方法 ShowInfo(在控制台 显示卡车的信息),并编写构造方法。在 Main 方法中测试以上各类,实现多态。


3.2、实验步骤


3.2.1、实验程序


1、 实验的程序如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 实验五_1_
{
    class Vehicles
    {
        private string Brand;            //字段
        private string Color;
        public Vehicles(string brand, string color)     //构造函数
        {
            Brand = brand;
            Color = color;
        }
        public Vehicles() 
        {
        }
        public void Run()
        {
            Console.WriteLine("我已经开动了");
        }
        public virtual void ShowInfo()   //虚方法
        {
            Console.WriteLine("商标: {0},颜色:  {1}", Brand, Color);
        }
    }
    class Car : Vehicles          
    {
        private int Seats;
        public Car(int seats)
        {
            Seats = seats;
        }
        public override void ShowInfo()        //重载虚方法
        {
            Console.WriteLine("座位: {0}", Seats);
        }
    }
    class Truck : Vehicles
    {
        private float Load;
        public Truck(float load)
        {
            Load = load;
        }
        public override void ShowInfo()
        {
            Console.WriteLine("载重: {0}顿", Load);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Vehicles car = new Vehicles("奔驰", "红色");
            Vehicles truck = new Vehicles("东风", "蓝色");
            Car carSeat = new Car(4);
            Truck truckLoad = new Truck(2);
            car.ShowInfo();
            truck.ShowInfo();
            carSeat.ShowInfo();
            truckLoad.ShowInfo();
            Console.ReadLine();
        }
    }
}


3.2.2、实验运行结果


2、 实验的运行结果如下:


3e5b81c2a2b44928ba080a742b71b187.jpg


3.3、实验内容:创建一个 Vehicle 类,并将它声明为抽象类


实验内容:创建一个 Vehicle 类,并将它声明为抽象类如下所示


创建一个 Vehicle 类,并将它声明为抽象类。在 Vehicle 类中声明一个 NumOfWheels 方法,使它返回一个字符串值。创建两个类 Car 和 Motorbike 从 Vehicle 类继承,并在这 两个类中实现 NumOfWheels 方法。在 Car 类中,应当显示“四轮车”信息,而在 Motorbike 类中应当显示“双轮车”信息。在 Main()方法中创建 Car 和 Motorbike 的实例,并在控制台中显示消息。


3.4、实验步骤


3.4.1、实验程序


1、 实验的程序如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 实验五_2_
{
    abstract class Vehicle
    {
        public virtual void NumOfWheels()   //创建虚方法
        { 
        }
    }
    class Car:Vehicle 
    {
        public override void NumOfWheels()   //重载虚方法,输出信息
        {
            Console.WriteLine("四轮车");
        }
    }
    class Motorbike : Vehicle
    {
        public override void NumOfWheels()
        {
            Console.WriteLine("双轮车");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Car car = new Car();                    //创建派生类的对象
            Motorbike motorbike = new Motorbike();
            car.NumOfWheels();                      //调用派生类的方法
            motorbike.NumOfWheels();
            Console.ReadLine();
        }
    }
}


3.4.2、实验运行结果

2、 实验的运行效果如下:

068f3800e2474f8a80823dd2b0871f65.jpg


image.png


四、实验总结


1、通过本次实验,自己掌握了C#的派生类、方法重写、方法多态等运用。

2、掌握了类的继承特性。

3、加深了对派生类继承基类的属性的概念,派生类除了拥有基类的属性外,还有自己的属性。

4、第一个实验过程中出现了基类没有“0”参数的构造函数的情况。

于是加上了语句

public Vehicles() 
{
}
  • 使基类拥有没有参数的构造函数。


f0b334bc49f9445eb03c5e54483f5159.jpg


目录
打赏
0
0
0
0
35
分享
相关文章
基于 C# 深度优先搜索算法的局域网集中管理软件技术剖析
现代化办公环境中,局域网集中管理软件是保障企业网络高效运行、实现资源合理分配以及强化信息安全管控的核心工具。此类软件需应对复杂的网络拓扑结构、海量的设备信息及多样化的用户操作,而数据结构与算法正是支撑其强大功能的基石。本文将深入剖析深度优先搜索(Depth-First Search,DFS)算法,并结合 C# 语言特性,详细阐述其在局域网集中管理软件中的应用与实现。
82 3
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
127 0
基于 C# 网络套接字算法的局域网实时监控技术探究
在数字化办公与网络安全需求增长的背景下,局域网实时监控成为企业管理和安全防护的关键。本文介绍C#网络套接字算法在局域网实时监控中的应用,涵盖套接字创建、绑定监听、连接建立和数据传输等操作,并通过代码示例展示其实现方式。服务端和客户端通过套接字进行屏幕截图等数据的实时传输,保障网络稳定与信息安全。同时,文章探讨了算法的优缺点及优化方向,如异步编程、数据压缩与缓存、错误处理与重传机制,以提升系统性能。
79 2
C# 网页截图全攻略:三种技术与 Chrome 路径查找指南
本文主要介绍了在 C# 中实现网页截图的几种技术及相关要点。涵盖了 PuppeteerSharp、Selenium 和 HtmlToImage 三种方式,分别阐述了它们的安装步骤及核心代码。同时,针对在 C# 中寻找 Windows 上 chrome.exe 路径这一问题,分析了未安装 Google Chrome 和已安装两种情况下的查找原因,并给出了相关参考链接,还列举了一系列与 C# 使用 Selenium、获取 chrome.exe 路径以及在 Linux 上部署相关的参考资料。
190 11
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C# 比较对象新思路,利用反射技术打造更灵活的比较工具
中途接手的项目,碰到需要在更新对象信息时比较并记录差异的需求,最变态的还有附加要求,怎么办?有没有既能满足需求又能对项目影响最小的方法呢?分享这个我封装的方法,一个利用反射技术打造的更灵活的比较工具
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)
C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)
104 1
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问