多态 模拟 移动硬盘 插入电脑 读写,方法1传参,方法2属性赋值

本文通过C#实现多态模拟移动存储设备(如移动硬盘、U盘、MP3)与计算机之间的读写交互过程。展示了如何使用抽象类、继承及多态特性来模拟不同类型的移动存储设备。
//多态 模拟 移动硬盘 插入电脑 读写,方法1传参,方法2属性赋值
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //多态 模拟 移动硬盘 插入电脑 读写
            //MobileDisk md = new MobileDisk();//父类抽象类不能实例化,所以实例化子类
            //UDisk ud = new UDisk();
            //Mp3 mp = new Mp3();
            MobileStorage mp = new Mp3();
            Computer cpu = new Computer();//通过属性拿到父类,在外面不能传参数,采用赋值
            cpu.Ms = mp;//表示把插入的MP3赋值给电脑里面的Ms属性
            //cpu.CpuRead(mp);
            //cpu.CpuWrite(mp);
            cpu.CpuRead();//采用属性赋值形式,不用传参数
            cpu.CpuWrite();

            Console.ReadKey();
        }     
    }
    /// <summary>
    /// 抽象的父类,可移动存储
    /// </summary>
    public abstract class MobileStorage
    {
        public abstract void Read();
        public abstract void Write();
    }
    public class MobileDisk : MobileStorage
    {

        public override void Read()//override可以重写抽象方法和虚方法
        {
            Console.WriteLine("移动硬盘在读取数据");
        }

        public override void Write()
        {
            Console.WriteLine("移动硬盘在写入数据");
        }
    }
    public class UDisk : MobileStorage
    {

        public override void Read()
        {
            Console.WriteLine("U盘在读取数据");
        }

        public override void Write()
        {
            Console.WriteLine("U盘在写入数据");
        }
    }
    public class Mp3 : MobileStorage
    {

        public override void Read()
        {
            Console.WriteLine("Mp3在读取数据");
        }

        public override void Write()
        {
            Console.WriteLine("Mp3在写入数据");
        }
        public void PlayMusic()
        {
            Console.WriteLine("MP3自己可以播放音乐");
        }
    }

    public class Computer
    {
        //方法2,拿字段存传入的父类参数
        private MobileStorage _ms;

        public MobileStorage Ms//字段封装属性
        {
            get { return _ms; }
            set { _ms = value; }
        }

        public void CpuRead()//方法1,想拿到父类,传参数进来就行,可以传子类进来
        {
            Ms.Read();//方法2,通过属性拿到父类,在外面不用传参数,采用赋值
        }
        public void CpuWrite()
        {
            Ms.Write();
        }

        //public void CpuRead(MobileStorage ms)//方法1,想拿到父类,传参数进来就行,可以传子类进来
        //{
        //    ms.Read();
        //}
        //public void CpuWrite(MobileStorage ms)
        //{
        //    ms.Write();
        //}
    }
}
多态允许不同对象对同一消息作出响应,在这个场景中,可将移动硬盘、U盘和MP3视为不同的移动存储设备,它们都具备读写数据的能力。以下是实现该功能的C#代码示例: ```csharp using System; // 定义移动工具抽象类 public abstract class MobileTool { public abstract void Read(); public abstract void Write(); } // 定义U盘类,继承自移动工具类 public class UDisk : MobileTool { public override void Read() { Console.WriteLine("从U盘读取数据"); } public override void Write() { Console.WriteLine("向U盘写入数据"); } } // 定义MP3类,继承自移动工具类 public class Mp3 : MobileTool { public override void Read() { Console.WriteLine("从MP3读取数据"); } public override void Write() { Console.WriteLine("向MP3写入数据"); } } // 定义移动硬盘类,继承自移动工具类 public class MobileHardDisk : MobileTool { public override void Read() { Console.WriteLine("从移动硬盘读取数据"); } public override void Write() { Console.WriteLine("向移动硬盘写入数据"); } } // 定义计算机类 public class Computer { private MobileTool _mt; public MobileTool Mt { get { return _mt; } set { _mt = value; } } public void CpuRead() { if (_mt != null) { _mt.Read(); } } public void CpuWrite() { if (_mt != null) { _mt.Write(); } } } class Program { static void Main(string[] args) { // 使用U盘 MobileTool uDisk = new UDisk(); Computer computer = new Computer(); computer.Mt = uDisk; computer.CpuRead(); computer.CpuWrite(); // 使用MP3 MobileTool mp3 = new Mp3(); computer.Mt = mp3; computer.CpuRead(); computer.CpuWrite(); // 使用移动硬盘 MobileTool mobileHardDisk = new MobileHardDisk(); computer.Mt = mobileHardDisk; computer.CpuRead(); computer.CpuWrite(); Console.ReadKey(); } } ``` 在上述代码中,首先定义了一个抽象类`MobileTool`,该类包含两个抽象方法`Read`和`Write`,分别用于读取和写入数据。然后,定义了`UDisk`、`Mp3`和`MobileHardDisk`类,它们都继承自`MobileTool`类,并实现了`Read`和`Write`方法。接着,定义了`Computer`类,该类包含一个`MobileTool`类型的属性`Mt`,以及`CpuRead`和`CpuWrite`方法,用于调用移动工具的读取和写入方法。最后,在`Main`方法中,创建了不同的移动工具对象,并将它们插入到计算机中,调用计算机的读取和写入方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值