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

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

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

  • 实验内容:C#面向对象技术
  • 一、 实验目的及要求
  • 二、实验环境
  • 三、实验内容与步骤
  • 3.1、实验内容:测试类,实现多态
  • 3.2、实验步骤
    • 3.2.1、实验程序
    • 3.2.2、实验运行结果
  • 3.3、实验内容:创建一个 Vehicle 类,并将它声明为抽象类
  • 3.4、实验步骤
    • 3.4.1、实验程序
    • 3.4.2、实验运行结果
  • 四、实验总结

在这里插入图片描述

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

在这里插入图片描述

一、 实验目的及要求

  • (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、 实验的运行结果如下:

在这里插入图片描述

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、 实验的运行效果如下:
在这里插入图片描述
在这里插入图片描述

四、实验总结

  • 1、通过本次实验,自己掌握了C#的派生类、方法重写、方法多态等运用。
  • 2、掌握了类的继承特性。
  • 3、加深了对派生类继承基类的属性的概念,派生类除了拥有基类的属性外,还有自己的属性。
  • 4、第一个实验过程中出现了基类没有“0”参数的构造函数的情况。
    于是加上了语句
public Vehicles() 
{
}
  • 使基类拥有没有参数的构造函数。

在这里插入图片描述

相关文章:

  • [Codeforces] combinatorics (R1600) Part.2
  • 【LC】反转链表, 相交链表, 环形链表
  • 【Java】之集合总结(上)
  • Redis中加锁的lua脚本的源码
  • Mac电脑解决Google翻译失效实用方法
  • 【易购管理系统】商品列表
  • 北斗导航 | RTKLib中的模型和算法(一)—— 时间系统
  • 【论文阅读】自动作文评分系统:一份系统的文献综述
  • avformat_open_input() 代码分析
  • Spring Bean的生命周期、Java配置BeanFactoryPostProcessor失效与解决
  • 大模型系统和应用——高效训练模型压缩
  • “华为杯”第十八届中国研究生数学建模竞赛一等奖经验分享
  • C#的StreamReader类使用说明
  • 基于图搜索的规划算法之 A* 家族(九):Hybrid A* 算法
  • 2022年Webpack 5初学者完整指南
  • AHK 中 = 和 == 等比较运算符的用法
  • es6(二):字符串的扩展
  • MQ框架的比较
  • React的组件模式
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 创建一个Struts2项目maven 方式
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 从0到1:PostCSS 插件开发最佳实践
  • 当SetTimeout遇到了字符串
  • 第十八天-企业应用架构模式-基本模式
  • 搞机器学习要哪些技能
  • 基于游标的分页接口实现
  • 免费小说阅读小程序
  • 如何设计一个微型分布式架构?
  • 探索 JS 中的模块化
  • 用jQuery怎么做到前后端分离
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • const的用法,特别是用在函数前面与后面的区别
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • # Panda3d 碰撞检测系统介绍
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (转)Linq学习笔记
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET Core WebAPI中封装Swagger配置
  • .NET Micro Framework 4.2 beta 源码探析
  • .net mvc部分视图
  • .NET 发展历程
  • .NET 使用 XPath 来读写 XML 文件
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .netcore 获取appsettings
  • .net连接MySQL的方法
  • .NET企业级应用架构设计系列之结尾篇
  • /proc/interrupts 和 /proc/stat 查看中断的情况