您好,欢迎来到九壹网。
搜索
您的当前位置:首页多态手段的练习

多态手段的练习

来源:九壹网

多态手段:虚方法的练习

//真的鸭子嘎嘎叫 木头鸭子吱吱叫 橡皮鸭子唧唧叫,用虚方法来表示多态
//创建父类和子类的对象,并且调用方法
RealDuck rd=new RealDuck();
rd.Bark();
MtDuck md=new MtDuck();
md.Bark();
XpDuck xd=new XpDuck();
xd.Bark();
//第二种方式
RealDuck rd=new RealDuck();
MtDuck md=new MtDuck();
XpDuck xd=new XpDuck();
//将三种方式放入父类数组中
RealDuck[]RealDucks={rd,md,xd}
for(int i=0;i<RealDuck.Length;i++)
{
RealDuck[i].Bark
}
//创建真的鸭子的父类
Pbublic Class RealDuck
{
//创建真的鸭子的方法
Public virtural void Bark
{
Console.WriteLine("真的鸭子嘎嘎叫");
}
}
//写一个继承真的鸭子父类的子类木头鸭子
Public Class MtDuck:RealDuck
{
//重写子类的方法
Public override void Bark
{
Console.WriteLine("木头鸭子咯咯叫");
}
}
//写一个继承父类的子类
Public Class XpDuck:RealDuck
{
//重写子类的方法
Public override void Bark
{
Console.WriteLine("橡皮鸭子叽叽叫");
} 
}

使用多态求矩形的面积和周长以及圆形的面积和周长

//使用多态求矩形的面积和周长以及圆形的面积和周长
//用抽象类来多态
//抽象类不能实例化,只能实例子类
Shape shape=new Ciercle()
Shape shape=new Square()
//方法返回的值需要用都崩了类型来接收
double Area=shape.GetArea();
double perimiter=shape.GetPerimiter();
Console.WriteLine($"这个形状面积为{Area},周长为{permiter}");
console.ReadKey();
//抽象一个父类
public abstract Class Shape
{
//创建抽象类计算面积和周长的抽象方法
Public abstract void GetArea();
public abstract void GetPerimiter();
}
//创建继承抽象父类的子类
public Class Circle:Shape
{
//写子类需要的字段
private double _r
//写子类需要的属性
public double R
{
get{return _r;}
set{_r=value;}
}
//写子类需要的构造函数
public Shape(double r)
{
this.R=r;
}
//创建子类方法
public override void GetArea()
{
return Math.pI*this.R*this.R;
}
public override void GetPrimiter()
{
return 2*Math.pI*this.R;
}
//创建继承父类长方形子类
public Class Square:Shape
{
//创建子类需要的字段
private double _chang
//创建子类需要的属性
public double Chang
{
get{return _chang;}
set{_chang=value;}
}
创建子类需要的构造函数
private double _kuan
public double Kuan
{
get{return_kuan;}
set{_kuan=value;}
}
//创建子类需要的构造函数
public Square(double chang,double kuan)
{
this.Kuan=kuan;
this.Chang=chang;
}
//创建子类的重写方法
public override void GetArea()
{
return this.Kuan*this.Chang;
}
public override void GetPrimiter()
{
return (this.Chang+this.Kuan)*2;
}
}

用多态来实现_将_移动硬盘或者U盘或者MP3插到电脑上进行读写数据练习

用多态来实现_将_移动硬盘或者U盘或者MP3插到电脑上进行读写数据
//第一种方式
//创建子类对象
MoblieDisk md=new MoblieDisk();
UDisk ud =new UDisk();
MP3 mp3=new MP3();
//创建电脑对象
Computer cpu=new Computer();
cpu.CpuRead(ud);
cpu.CpuWrite(ud);
//第二种方式
MoblieStorage ms=new MoblieDisk();
MoblieStorage ms=new UDisk();
MoblieStorage ms=new MP3();
创建电脑对象
Computer cpu=new Computer();
cpu.CpuRead(ms)//传入父类,实际传入子类
cpu.CpuWirite(ms)
Console.ReadKey();
//创建移动硬盘和U盘,MP3的抽象父类
public abstract Class MoblieStorage
{
//写抽象父类的抽象方法
public abstract void Read();
public abstract void Write();
}
//写一个继承抽象父类的子类
public Class MoblieDisk:MoblieStorage
{
//重写子类的方法
public overridevoid Read()
{
Console.WriteLine("移动硬盘正在读取数据");
}
public override void Write()
{
Console.WriteLine("移动硬盘正在写入数据");
}
}
//写一个继承抽象父类的子类
public Class uDisk:MoblieStorage
{
//重写子类方法
public override void Read()
{
Console.WriteLine("U盘正在读取数据");
}
public override void Write()
{
Console.WriteLine("U盘正在写入数据");
}
}
//写一个继承父类的子类
public Class MP3:MoblieStorage
{
//重写子类的方法
public override void Read()
{
Console.WriteLine("MP3正在读取数据");
}
public override void Write()
{
Console.WriteLine("MP3正在写入数据");
}
public void PlayMusic()
{
Console.writeLine("MP3正在播放音乐");
}
}
//写一个电脑类
public Class Conputer
{
/在电脑方法用父类方法可以直接传参或者写字段和属性以及构造函数
public void CpuRead(MoblieStorage ms)
{
ms.Read();
}
}
















因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务