using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _08移动设备存储 { class Program { static void Main(string[] args) { MobileDisk md = new MobileDisk(); Mp3 mp3 = new Mp3(); UDisk ud = new UDisk(); Computer cpu = new Computer(); //传入移动硬盘参数,即执行移动硬盘子类的方法 //因为移动存储父类是抽象类,不能实例化,只能新建一个cpu普通类来实现读写。并将抽象父类传入cpu操作方法中 //cpu.CpuRead(md); //cpu.CpuWrite(md); //第二种方法,定义属性 cpu.ms = mp3;//将MP3插入到电脑中 cpu.CpuRead(); cpu.CpuWrite(); mp3.PlayMusic(); Console.ReadKey(); } } abstract class MobileStorage { public abstract void Read(); public abstract void Write(); } class MobileDisk : MobileStorage { public override void Read() { Console.WriteLine("移动硬盘在读取"); } public override void Write() { Console.WriteLine("移动硬盘在写入"); } } class UDisk : MobileStorage { public override void Read() { Console.WriteLine("U盘在读取"); } public override void Write() { Console.WriteLine("U盘在写入"); } } class Mp3 : MobileStorage { public override void Read() { Console.WriteLine("mp3在读取"); } public override void Write() { Console.WriteLine("mp3在写入"); } public void PlayMusic() { Console.WriteLine("MP3在播放音乐"); } } //电脑去识别各种设备,并执行读写方法 //多态,就是把所有子类对象当作父类对象来看 class Computer { //public void CpuRead(MobileStorage ms) //{ // //执行的是父类的方法,但子类对父类方法进行了重写,真正执行的是子类方法 // ms.Read(); //} //public void CpuWrite(MobileStorage ms) //{ // ms.Write(); //} //第二种方法,定义类属性,本质上等于传参 //自动属性 public MobileStorage ms { get;set; } public void CpuRead() { this.ms.Read(); } public void CpuWrite() { this.ms.Write(); } } }
时间: 2024-10-06 16:05:39