请教C#中接口的显示实现的问题?

问题描述

classProgram:IShape1,IShape2{staticvoidMain(string[]args){ProgramobjProgram=newProgram();objProgram.DrawRectangle();objProgram.DrawCircle();((IShape1)objProgram).DrawCircle();((IShape2)objProgram).DrawCircle();Console.ReadLine();}publicvoidDrawRectangle(){Console.WriteLine("DrawaRectangle");}voidIShape1.DrawRectangle(){Console.WriteLine("DrawaIShape1.Rectangle");}publicvoidDrawCircle(){Console.WriteLine("DrawaCircle");}voidIShape1.DrawCircle(){Console.WriteLine("DrawaIShape1.Circle");}voidIShape2.DrawCircle(){Console.WriteLine("DrawaIShape2.Circle");}}interfaceIShape1{voidDrawRectangle();voidDrawCircle();}interfaceIShape2{voidDrawCircle();}运行没有问题,结果也能得到,我想问就是:程序接口中的方法可以用显示实现的同时也用一般的实现,而且如果两个接口中有同名的方法,可以只用一个public的同名方法实现,这是问什么呢??

解决方案

解决方案二:
这个有什么问题?同名的方法如果所处理的逻辑相同,那么为什么要显示写两个?
解决方案三:
不写接口名称,直接写publicvoidDrawCircle(){}
解决方案四:
我想问1.publicvoidDrawCircle()这一个方法为什么就可以实现了两个接口??2.publicvoidDrawRectangle()和voidIShape1.DrawRectangle()为什么可以同时存在呢?附:我是c#新人
解决方案五:
C#编程指南显式接口实现(C#编程指南)如果类实现两个接口,并且这两个接口包含具有相同签名的成员,那么在类中实现该成员将导致两个接口都使用该成员作为它们的实现。例如:C#复制代码interfaceIControl{voidPaint();}interfaceISurface{voidPaint();}classSampleClass:IControl,ISurface{//BothISurface.PaintandIControl.Paintcallthismethod.publicvoidPaint(){}}然而,如果两个接口成员执行不同的函数,那么这可能会导致其中一个接口的实现不正确或两个接口的实现都不正确。可以显式地实现接口成员--即创建一个仅通过该接口调用并且特定于该接口的类成员。这是使用接口名称和一个句点命名该类成员来实现的。例如:C#复制代码publicclassSampleClass:IControl,ISurface{voidIControl.Paint(){System.Console.WriteLine("IControl.Paint");}voidISurface.Paint(){System.Console.WriteLine("ISurface.Paint");}}类成员IControl.Paint只能通过IControl接口使用,ISurface.Paint只能通过ISurface使用。两个方法实现都是分离的,都不可以直接在类中使用。例如:C#复制代码SampleClassobj=newSampleClass();//obj.Paint();//Compilererror.IControlc=(IControl)obj;c.Paint();//CallsIControl.PaintonSampleClass.ISurfaces=(ISurface)obj;s.Paint();//CallsISurface.PaintonSampleClass.显式实现还用于解决两个接口分别声明具有相同名称的不同成员(如属性和方法)的情况:C#复制代码interfaceILeft{intP{get;}}interfaceIRight{intP();}为了同时实现两个接口,类必须对属性P和/或方法P使用显式实现以避免编译器错误。例如:C#复制代码classMiddle:ILeft,IRight{publicintP(){return0;}intILeft.P{get{return0;}}}此类问题请先查阅msdn:http://msdn2.microsoft.com/zh-cn/library/ms173157(vs.80).aspx
解决方案六:
其实你所问的就是隐式接口实现与显示接口实现的访问权限的问题,显示接口实现只能由相应接口来调用 而不能由类来进行调用

时间: 2024-09-20 12:25:27

请教C#中接口的显示实现的问题?的相关文章

请教jsp中显示标签value

问题描述 请教jsp中显示标签value 在jsp中有文本框: 其中value用于显示内容,用安全软件扫描出问题后,说是需要用urlencode编码一下即可,于是改成如下: 但是页面显示出错,不知道这种情况下如何设置value值,请教了 解决方案 你用的是tomcat吗 解决方案二: 安全软件扫描是个什么东东?你的${username}包含有html标签什么的?如果是要将<和>替换为对应的实体对象<和> 解决方案三: 你request.setAtttibute("user

android studio中的preview显示空白

问题描述 android studio中的preview显示空白 刚刚接触android studio,今天新建项目的时候,出现了preview中rendering problems,我进行更新后没有再报错,但是现在显示一片空白,请教各位大神这是什么情况 解决方案 这个sdk version更改一下其他值 解决方案二: 而且我已经在style文件里加了Base.,还是没用 解决方案三: 右上方 sdk 版本可能选的不对

svg-android中Svg的显示与交互

问题描述 android中Svg的显示与交互 我现在想在android上用svg文件,我们要解析svg文件,显示,能够两个手指进行缩放,能够接收到svg中每个图形元素的点击事件,我想问一下,各位大侠有知道什么好的方案或者用什么开源包能实现吗?我现在是在直接用js控制点击图形元素后变色,但是反应很慢. 解决方案 你好,请问 你的问题解决了吗?最近在做SVG的图片交互,安卓上面 ,不知道该怎么处理是好啊.能不能请教一下 你是怎么解决的,非常感谢.. 解决方案二: 你好,请问 你的问题解决了吗?最近在

php 面向对象中接口 与多态性的用法

php教程 面向对象中接口 与多态性的用法 ,接口的方法名是show,继承接口的类中必须有show这个方法,要不然就会报错.也就是说接口的方法是假的,真正起作用的是在继承的类中的方法,就是因为这一点,所以我觉得,接口根php的抽象类有点像. <?php interface face1 {  const param = 'test';  public function show(); } class test implements face1 {  public function show()  

我在UpdatePanel中放入一个GridView,在GridView中的一个模板列中放入一个Menu,但更新GridView的数据后,增加的行中的Menu显示却有问题。

问题描述 我在UpdatePanel中放入一个GridView,在GridView中的一个模板列中放入一个Menu,但更新GridView的数据后,增加的行中的Menu显示却有问题,想请教是否有解决办法.谢谢! 解决方案 解决方案二:什么问题?解决方案三:好像updatepannel尚不能支持menu!

PropertyGrid中的枚举显示为中文(转)

本文转载:http://www.cnblogs.com/yank/archive/2011/09/17/2179598.html   ropertyGrid中的枚举显示为中文 在系统开发中,经常会使用PropertyGrid来修改或者展示某个对象的属性,如果类中定义了枚举,在展现的时候默认会展示枚举的项或者枚举值,但是这并不是我们想要的.用户使用的时候并不清楚该项代表的意思.之前介绍过枚举显示中文的一篇文章,大家可以看下,枚举显示中文. 想要的效果: 在PropertyGrid中枚举显示中,又比

位图显示-MFC中OnPaint函数显示BMP图片的问题

问题描述 MFC中OnPaint函数显示BMP图片的问题 为什么我在MFC对话框中,在OnPaint函数中加入以下代码,BMP图像不能显示啊~~· BITMAP bm; CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); CDC memdc; CDC dc; memdc.CreateCompatibleDC(&dc);/ bmp.GetBitmap(&bm); CBitmap *bmpold=memdc.SelectObject(&bmp);/ dc

图片-android 4.0中 WebP不显示问题(不考虑4.0以下系统)

问题描述 android 4.0中 WebP不显示问题(不考虑4.0以下系统) 由于图片太大,我们项目中使用了webp格式的图片,在适配三星s2,4.0系统的时候出现了这种问题,部分webp图片可以显示,一部分webp图片不显示,但是在4.3以上的手机测试时都没有问题,不知道怎么回事,有没有大神帮解答下!谢谢! 解决方案 Android4.0 Toast显示问题Android 4.0 系统语言预设问题android 4.0 显示系统

ios-新人请教OC中self用法

问题描述 新人请教OC中self用法 新人小白,求教下面的获取文本框.标签的文本属性为什么都要用self.num1.text,self.resultLabel.text, 不能直接用num1.text,resultLabel.text??? #import "HMViewController.h" @interface HMViewController () @property (nonatomic, weak) IBOutlet UITextField *num1; @propert