实验内容: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() { }
- 使基类拥有没有参数的构造函数。