定义抽象类MobileStorage,在里面写虚方法Read和Write,三个存储设备继承此抽象类,并重写Read和Write方法。Computer类中包含一个类型为MobileStorage的成员变量,并为其编写get/set器,这样Computer中只需要两个方法:ReadData和WriteData,并通过多态性实现不同移动设备的读写。
时间: 2024-03-14 19:45:47 浏览: 14
好的,我来回答你的问题。
首先,抽象类MobileStorage的定义如下:
```csharp
public abstract class MobileStorage
{
public abstract void Read();
public abstract void Write();
}
```
然后,我们分别定义三个继承自MobileStorage的存储设备:
```csharp
public class USBFlashDisk : MobileStorage
{
public override void Read()
{
Console.WriteLine("USB flash disk reading data...");
}
public override void Write()
{
Console.WriteLine("USB flash disk writing data...");
}
}
public class MemoryCard : MobileStorage
{
public override void Read()
{
Console.WriteLine("Memory card reading data...");
}
public override void Write()
{
Console.WriteLine("Memory card writing data...");
}
}
public class ExternalHardDisk : MobileStorage
{
public override void Read()
{
Console.WriteLine("External hard disk reading data...");
}
public override void Write()
{
Console.WriteLine("External hard disk writing data...");
}
}
```
接下来,我们在Computer类中添加一个类型为MobileStorage的成员变量,并编写get/set器:
```csharp
public class Computer
{
private MobileStorage storageDevice;
public MobileStorage StorageDevice
{
get { return storageDevice; }
set { storageDevice = value; }
}
public void ReadData()
{
storageDevice.Read();
}
public void WriteData()
{
storageDevice.Write();
}
}
```
现在,我们就可以通过多态性实现不同移动设备的读写了,示例代码如下:
```csharp
Computer computer = new Computer();
MobileStorage usb = new USBFlashDisk();
MobileStorage memoryCard = new MemoryCard();
MobileStorage externalHD = new ExternalHardDisk();
computer.StorageDevice = usb;
computer.ReadData();
computer.WriteData();
computer.StorageDevice = memoryCard;
computer.ReadData();
computer.WriteData();
computer.StorageDevice = externalHD;
computer.ReadData();
computer.WriteData();
```
输出结果为:
```
USB flash disk reading data...
USB flash disk writing data...
Memory card reading data...
Memory card writing data...
External hard disk reading data...
External hard disk writing data...
```
希望我的回答能够帮助到你!