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


相关文章
|
7月前
|
关系型数据库 MySQL C#
C# winform 一个窗体需要调用自定义用户控件的控件名称
给用户控件ucQRCode增加属性: //二维码图片 private PictureBox _pictureBoxFSHLQrCode; public PictureBox PictureBoxFSHLQrCode {   get { return _pictureBoxFSHLQrCode; }   set { this.pictureBoxFSHLQrCode = value; } } 在Form1窗体直接调用即可: ucQRCode uQRCode=new ucQRCode(); ucQRCode.PictureBoxFSHLQrCode.属性= 要复制或传给用户控件上的控件的值
37 0
|
8月前
|
自然语言处理 Java 编译器
C#OOP之一面向对象简介
C#OOP之一面向对象简介
41 0
|
12天前
|
存储 C# 开发者
掌握 C#编程:关键技术与实践
【4月更文挑战第20天】掌握C#编程的关键技术,包括面向对象编程、数据类型、控制流、异常处理、集合泛型、委托事件和异步编程。通过学习基础、实践项目、代码调试、参考优秀代码、社区交流和持续学习来提升技能。注重代码质量,以开发高质量应用程序。
|
21天前
|
数据采集 C# 数据安全/隐私保护
掌握 C# 爬虫技术:使用 HttpClient 获取今日头条内容
本文介绍了如何使用C#的HttpClient与爬虫代理IP技术抓取今日头条内容,以实现高效的数据采集。通过结合亿牛云爬虫代理,可以绕过IP限制,增强匿名性。文中提供了一个代码示例,展示如何设置代理服务器信息、请求头,并用正则表达式提取热点新闻标题。利用多线程技术,能提升爬虫采集效率,为市场分析等应用提供支持。
掌握 C# 爬虫技术:使用 HttpClient 获取今日头条内容
|
2月前
|
存储 开发框架 安全
C# .NET面试系列二:面向对象
<h2>面向对象 #### 1. 什么是构造函数? 构造函数(Constructor)是一种特殊类型的方法,它在创建类的实例(对象)时被调用,用于初始化对象的状态。构造函数的名称必须与包含它的类的名称相同,并且没有返回类型。 主要特点和用途包括: 初始化对象: ```c# 构造函数主要用于初始化类的实例。当使用 new 关键字创建类的对象时,构造函数会被调用,确保对象在使用之前处于一个合适的状态。 ``` 与类同名: ``` 构造函数的名称必须与包含它的类的名称完全相同。 ``` 没有返回类型: ```c# 构造函数没有返回类型,甚至不能声明 void。它的目的是初始化对象
48 0
|
8月前
|
C# 数据库 Windows
C# OOP程序设计目录
C# OOP程序设计目录
24 0
|
9月前
|
C#
45【软件技术基础】C#调用NPOI插件对EXCEL进行处理
NPOI插件进行EXCEL表格处理,不依赖第三方软件,功能强大,使用简便。 C#调用NPOI插件进行EXCEL单个表和文件夹中批量表的处理。
142 1
|
5月前
|
编译器 C# Windows
C#高级程序设计Type类
C#高级程序设计Type类
30 0
|
5月前
|
SQL 关系型数据库 MySQL
C#程序设计案例开发教程
C#程序设计案例开发教程
50 0
|
7月前
|
C# Windows
[闻缺陷则喜]C#程序集名称
[闻缺陷则喜]C#程序集名称