采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
就是你说这个用到了抽象工厂方法,能具体讲一下么?还有具体的static和default的区别,default动态的好处是什么?
还是说这里只是提一下后面你会在说?
hello, 这个后面确实有细讲。 不过这里我先回复你的疑问。
static是静态方法,和Class的静态方法类似,接口允许静态方法大大简化了设计的难度,比如很多静态方法就不必非要挂靠Class。比如Stream.of, of是一个interface Stream定义的静态工厂方法,这个方法放在interface Stream是最佳选择,不然还得找一个工厂类。 Stream.of写起来很方便。
default是动态方法,实现接口的类,也可以使用default方法。这种设计简化了多继承。接口和抽象类很像,抽闲类的抽象方法可能调用其他抽象方法。比如Stream.takeWhile方法,这个default方法就定义在了Stream interface中,这样所有实现interafce Stream的Class都会拥有这个方法。
之所以非常需要default,是因为问题的重点在于接口的设计是一种组合~关系,耦合很低;多继承抽象类是的关系耦合较重。 如果,interface Stream不提供default方法,那么就需要实现为抽象类abstract class Stream,那是不是还需要一个IStream的接口呢?
谢谢老师解答。 不好意思,可能是我没有说清楚,我其实理解default关键字使得interface里面能实现了方法的意义,我想了解的是何为动态,相比static关键字修饰interface中的方法,他有什么不同?是方法存的区域不同么? 谢谢
静态方法就是可以用接口名称直接调用,动态方法必须是继承接口的类用new创建了实例才可以调用
明白了。谢谢老师。
登录后可查看更多问答,登录/注册
深度剖析大厂面试高频真题,让你秒变offer收割机
1.5k 6
1.1k 11
1.1k 10
780 10
861 8