银河飞将
查看详细资料
TOP
原帖由 @总是注册不成功 于 2017-7-6 09:56 发表 accept是FilenameFilter接口定义的一个方法,DirFilter类实现了FilenameFilter接口,当它的实例被传给path.list方法时,accept方法会被调用多次。 你书看得太快了,还是从头看起吧,基础打稳先。
原帖由 @yfl2 于 2017-7-6 10:00 发表 是File类的list方法
原帖由 @yfl2 于 2017-7-6 10:54 发表 你可以关心,看它怎么调用的accept,这个过程本身的原理有啥疑问? 本帖最后由 yfl2 于 201776 10:55 通过手机版编辑
原帖由 @cf3b5 于 2017-7-6 10:36 发表 File类就好像一个施工队,施工队里头有流程是筛沙(accept),原来有专人干这事,而且干这事需要有筛沙证(接口)! 现在有个新项目,要求有新的筛沙工艺,所以包工头(码农,就是你),找了个新人回来,名字叫DirFilter,你先让他考个筛沙证(继承接口),并让他学会新的筛沙工艺(实现accept方法),最后你把新人换掉原本的那个筛沙的哥们(path.list(new DirFilter())) 这样干活的时候,前一个环节的哥们把粗沙丢给这个新人,然后对他吼“筛沙”(调用accept),负责筛沙的新人就老老实实的按照他学的筛沙工艺筛沙,筛完的沙给下一个工人(return)…… 这里头最大的优点就是,其实包工头也不需要知道施工流程究竟是怎样的,反正他知道,只要找个有筛沙证的哥们,并且告诉他新的筛沙工艺(实现accept),这包工队就会像以前那样工作! 其实面向对象开发里头,处处都是这种结构,简单来说,为什么要面向对象开发,要的就是这个目的!
原帖由 @hourousha 于 2017-7-6 13:50 发表 说实话,您问的和File类本身没多大关系,而和OOP的基础知识有关。C#自不用说,plain c++里虽然没有显式的interface,但可以用全是纯虚函数的抽象类替代。所以恕我直言,您可能需要加强一下OOP的理解。比如基类继承和接口使用原则之类的基础概念。 java和c#语法有类似但也有不同。java没有委托,使用interface之类的来进行回调,此时可以使用local class来简化程序编写(类似c#里的匿名方法或lambda表达式)。所以从这个角度讲,java对interface的使用也许比c#更多一些。