类库的代码如下:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace MyFirstLib
{
public abstract class Vehicles
{
} public interface IPassengerCarrier
{
} public interface IHeavyLoadCarrier
{
} public abstract class Car : Vehicles
{
} public abstract class Train : Vehicles
{
} public class Compact : Car, IPassengerCarrier
{
} public class SUV : Car, IPassengerCarrier
{
} public class Pickup : Car, IPassengerCarrier, IHeavyLoadCarrier
{
} public class PassengerTrain : Train, IPassengerCarrier
{
} public class FreightTrian : Train, IHeavyLoadCarrier
{
} public class T242DoubleBogey : Train, IHeavyLoadCarrier
{
}
}
应用程序的代码如下:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MyFirstLib;namespace Traffic
{
class Class1
{
static void Main(string[] args)
{
AddPassenger(new SUV());
AddPassenger(new Compact());
AddPassenger(new PassengerTrain());
AddPassenger(new Pickup());
} static void AddPassenger(IPassengerCarrier Vehicle)
{
Console.WriteLine(Vehicle.ToString());
Console.ReadKey();
}
}
}题目是让用应用程序要包括函数AddPassenger(),来接受任何带有IPassengerCarrier接口的对象,在每个对象上调用派生于System.Object的To.String()方法,并把结果输出到屏幕上类库部分是我自己写的,应用程序部分是看答案的,我不是很懂函数自定义的部分,特别是static void AddPassenger(IPassengerCarrier Vehicle)这一句,为什么函数的参数里面是接口加上类的名字呢,而且中间还没有逗号来隔开,明明程序主体部分调用这个函数时候,参数是实例化的一个对象啊,这表示的是什么意思呢?
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace MyFirstLib
{
public abstract class Vehicles
{
} public interface IPassengerCarrier
{
} public interface IHeavyLoadCarrier
{
} public abstract class Car : Vehicles
{
} public abstract class Train : Vehicles
{
} public class Compact : Car, IPassengerCarrier
{
} public class SUV : Car, IPassengerCarrier
{
} public class Pickup : Car, IPassengerCarrier, IHeavyLoadCarrier
{
} public class PassengerTrain : Train, IPassengerCarrier
{
} public class FreightTrian : Train, IHeavyLoadCarrier
{
} public class T242DoubleBogey : Train, IHeavyLoadCarrier
{
}
}
应用程序的代码如下:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MyFirstLib;namespace Traffic
{
class Class1
{
static void Main(string[] args)
{
AddPassenger(new SUV());
AddPassenger(new Compact());
AddPassenger(new PassengerTrain());
AddPassenger(new Pickup());
} static void AddPassenger(IPassengerCarrier Vehicle)
{
Console.WriteLine(Vehicle.ToString());
Console.ReadKey();
}
}
}题目是让用应用程序要包括函数AddPassenger(),来接受任何带有IPassengerCarrier接口的对象,在每个对象上调用派生于System.Object的To.String()方法,并把结果输出到屏幕上类库部分是我自己写的,应用程序部分是看答案的,我不是很懂函数自定义的部分,特别是static void AddPassenger(IPassengerCarrier Vehicle)这一句,为什么函数的参数里面是接口加上类的名字呢,而且中间还没有逗号来隔开,明明程序主体部分调用这个函数时候,参数是实例化的一个对象啊,这表示的是什么意思呢?
public interface IPassengerCarrier
{
}
这个类型。因为下面的
AddPassenger(new SUV());
AddPassenger(new Compact());
AddPassenger(new PassengerTrain());
AddPassenger(new Pickup());
这四种对象都实现了IPassengerCarrier接口,也就是说是IPassengerCarrier接口的子类,
是面向对象 多态特点的应用。
==
正确,这也是多态的一种形式
{
Console.WriteLine(Vehicle.ToString());
Console.ReadKey();
}
其实你可以这么理解 Vehicle只是个变量名,而并非是类 Vehicle的类型是 实现IPassengerCarrier接口的所有类型 这里的Vehicle只是一个变量名
和 Class1 myClass = new Class1(); 的myClass一样,只是个变量