自定义类实现接口重写方法(实现接口要重写所有方法吗)

网友投稿 234 2023-01-10


本篇文章给大家谈谈自定义类实现接口重写方法,以及实现接口要重写所有方法吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享自定义类实现接口重写方法的知识,其中也会对实现接口要重写所有方法吗进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

C#中怎样实现类和接口的继承,怎样重写方法,请高人写具体点啊,谢谢

来个例子吧,以播放器为例。MP3播放器和MP4播放器。他们都有播放的功能,但实现播放的功能不一样,因为MP4可以播放视频而MP3不能。这时可以定义一个接口让这两种播放器去自己实现各自的功能。
interface Media

//这里定义一个播放的方法就可以了,在接口里不允许实现。
//假如去实现的话,你是写MP3的实现代码还是MP4的实现代码呢?
//这个方法的实现是不确定的,所以由子类去实现吧。
void play();

class MP3 :Media

//实现接口
public void play()

//MP3的播放功能代码


class MP4 :Media

//实现接口
public void play()

//MP4的播放功能代码


接口定义的方法,在其子类必须要实现。
===============================
刚才是定义的接口,现在来定义一个Media的父类。
class Media

//定义虚方法,用virtual关键字,说明这个方法可以被子类重写。
public virtual void play()
{
Console.WriteLine("播放");
}

class MP3 :Media

//重写父类方法用override 关键字。
public override void play()
{
Console.WriteLine("MP3播放功能");
}

class MP4 :Media

//重写父类方法用override 关键字。
public override void play()
{
Console.WriteLine("MP4播放功能");
}

这样就实现重写了。MP3和MP4类将会执行各自重写的代码。
网上也有很多的代码,建议去多看看。

java中,一个类实现某个接口,必须重写接口中的所有方法吗

不一定,关键要看子类是否是抽象类。
如果子类是非抽象类,则必须实现接口中自定义类实现接口重写方法的所有方法自定义类实现接口重写方法
如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在。

为什么java中系统定义的接口不用进行重写而自定义的接口在类中全部都要进行重写呢?

这可能要从操作系统上来说
服务器操作系统有很多
收费的系统有 unix ,windows等
免费的主要是 linux.
一般来说 windows 对的数据库是mssql 这两者的使用费用都相当昂贵. 具体来说都是好几十万的算.
unix的话 最稳定,一般国家基础电信系统都是unix. unix是最贵的操作系统了听说是百万级别的(money)
所以一般上了一定的规模 但是不想因为使用windows盗版而引来官司的话 都是使用linux+mysql 数据作为程序的基础支撑. 但是一般开发上用的多的系统都是windows 所以就存在了程序的跨平台问题,java就是看准了这个问题才出来的,借助于java vm的支持 能让java程序在所有环境下运行(官方语言),程序发展(web)最终使用的平台都是unix 所以java就能在之间一直运行.
很显然java的模式其实很大程度上模拟了dll的实现,但是dll的话只能在windows平台下运行.java只能在jvm上运行.原理是一样不知道您能不能理解,要知道sun也是做操作系统的 只是没有在市场中占到领导位置,所以退到了二线来做java虚拟机.但是发现这个很有远景,所以微软也改写了dll的规范 提出了.net的构思,在.net2.0的框架里面这个有很大的优化,但是微软一直是一个垄断公司他的目标都是销售他的操作系统,这是他的最终目标,所以他不会考虑跨平台的问题,所以java在很大程度上有优势也有益于我们的系统,但是要知道服务器系统最终都是走向unix所以都需要花钱的 哈哈. 不过说了这么多我也没说明白java的好处,
但是要知道java在j2ee上很有前途.毕竟发展了好多年啊.基础构件都比.net优秀.但是在窗体开发上java并不优秀.j2ms的话抄做的比较厉害,实际做的人不多.

实现filter接口的类需要重写什么方法

要实现一个Filter自定义类实现接口重写方法,我们需要继承自FilterAttribute类同时实现上面自定义类实现接口重写方法的一个或几个接口自定义类实现接口重写方法
public
class
MyFilter
:
FilterAttribute,
IActionFilter,
IResultFilter
{
}
这几个接口提供的方法如下:
上图的方法和Filter接口对应的方法按名称对号入座就可以。
IActionFilter接口有两个方法:
其中OnActionExecuting在执行Action方法之前会被调用,OnActionExecuted会在Action方法执行后调用。注意他们的参数分别是ActionExecutingContext和ActionExecutedContext。
ActionExecutedContext类包含一个
Canceled的属性,允许你取消当前的Action(怎么原来在P3中是在ActionExecutingContext的Canceled属性在P5中没有自定义类实现接口重写方法了呢?神奇.那么在OnActionExecuting的时候怎么取消一个Action呢?)。
FilterExcutedContext
类包含一个Exception属性和一个ExceptionHandled属性。如果Exception属性为null,则没有异常在action
stack中,表明Action方法运行并没有发生错误。反之则为出现异常。如果将ExceptionHandled属性设置为true则表明在这个
Filter中已经处理了异常。
IResultFilter接口也提供了两个方法:
他们分别在Action返回结果(例如return
View();)之前和之后执行。和IActionFilter差不多就不多说了。
IAuthorizationFilter是一个用于身份验证的Filter。只提供了一个void
OnAuthorization(AuthorizationContext
filterContext)方法。
IExceptionFilter会在出现异常的时候调用,也是只
提供一个void
OnException(ExceptionContext
filterContext)的方法自定义类实现接口重写方法
这些Filter可以被应用在类或者方法上,下面我们来看一下他们的执行顺序。首先我们写一个BaseController并加上两个Filter:
[MyFilter2(Target
=
"BaseController")]
[MyFilter1(Target="BaseController")]
public
class
BaseController
:
Controller
{
}
应为Controller类是实现这几个Filter接口的,所以我们在HomeController中重写Controller基类中的所有Filter接口的方法,并在HomeController类和里面的Filter方法加上我们自定义的MyFilter:
[MyFilter2(Target
=
"HomeController")]
//[MyFilter1(Target
=
"HomeController")]//注意我在这里把MyFilter1注释了.
[HandleError]
public
class
HomeController
:
BaseController
{
 [MyFilter2(Target
=
"HomeController.Filter")]
 [MyFilter1(Target
=
"HomeController.Filter")]
 public
ActionResult
Filter()
 {
return
Content("
这是在Action方法里面返回的内容!
");
 }
 protected
override
void
OnActionExecuted(ActionExecutedContext
filterContext)
 {
filterContext.HttpContext.Response.Write("
这是在HomeController里面重写OnActionExecuted方法添加的内容!
");
 }
 protected
override
void
OnActionExecuting(ActionExecutingContext
filterContext)
 {
filterContext.HttpContext.Response.Write("
这是在HomeController里面重写OnActionExecuting方法添加的内容!
");
 }
 protected
override
void
OnAuthorization(AuthorizationContext
filterContext)
 {
filterContext.HttpContext.Response.Write("
这是在HomeController里面重写OnAuthorization方法添加的内容!
");
 }
 protected
override
void
OnException(ExceptionContext
filterContext)
 {
filterContext.HttpContext.Response.Write("
这是在HomeController里面重写OnException方法添加的内容!
");
filterContext.ExceptionHandled
=
true;
 }
 protected
override
void
OnResultExecuted(ResultExecutedContext
filterContext)
 {
filterContext.HttpContext.Response.Write("
这是在HomeController里面重写OnResultExecuted方法添加的内容!
");
 }
 protected
override
void
OnResultExecuting(ResultExecutingContext
filterContext)
 {
filterContext.HttpContext.Response.Write("
这是在HomeController里面重写OnResultExecuting方法添加的内容!
");
 }
} 关于自定义类实现接口重写方法和实现接口要重写所有方法吗的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 自定义类实现接口重写方法的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于实现接口要重写所有方法吗、自定义类实现接口重写方法的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java集合基础知识 List/Set/Map详解
下一篇:详解Spring框架下向异步线程传递HttpServletRequest参数的坑
相关文章

 发表评论

暂时没有评论,来抢沙发吧~