Java | 接口和抽象类

来源:互联网 发布:yy静态头像psd源码 编辑:程序博客网 时间:2024/06/08 14:16

抽象类是普通的类和接口之间的一种中庸之道。abstract关键字允许人们在类中创建一个或多个没有任何定义的方法——提供了接口部分,但是没有提供任何相应的具体实现,这些实现是由此类的继承者创建的。


接口只提供了形式,而未提供任何具体实现。interface这个关键字产生一个完全抽象的类,根本没有提供任何具体实现。允许创建者确定方法名、参数列表和返回类型,但是没有任何方法体。接口是一个极度抽象的类,因为它允许人们通过创建一个能够被向上转型为多种基类的类型,来实现某种类似多重继变种的特性。

创建接口,需要用interface关键字来代替class关键字,就像类一样,可以在interface关键字前面添加public关键字(但仅限于该接口在与其同名的文件中被定义)。如果不添加public关键字,则它只具有包访问权限,只能在同一个包内可用。接口也可以包含域,但这些域隐式地为static和final的。

要让一个类遵循某个特定接口(或者是一组接口),需要使用implement关键字。


参考:http://blog.csdn.net/bailuweishuang520/article/details/51340426

完全解耦是尽最大程度降低类与类之间的耦合度,使程序具有很好的扩展性,便于修改。

耦合:类和类、模块和模块之间存在依赖关系,如果修改了某个实现就需要改一堆已经编写好的代码,这就是代码耦合度较高。/分层、注入、面向接口编程都是解耦的方式。


import java.util.*;//Processor接口interface Processor{public String name();Object process(Object input);}//实现Processor接口的静态类StringProcessorpublic abstract class StringProcessor implements Processor{public String name(){return getClass().getSimpleName();}public abstract String process(Object input);public static String s = "If she weights the same as a duck,she's made of wood";public static void main(String[] args){Apply.process(new Upcase(),s);Apply.process(new Downcase(),s);Apply.process(new Splitter(),s);}}//StringProcessor的子类Upcaseclass Upcase extends StringProcessor{public String process(Object input){return ((String)input).toUpperCase();}}//StringProcessor的子类Downcaseclass Downcase extends StringProcessor{public String process(Object input){return ((String)input).toLowerCase();}}//StringProcessor的子类Splitterclass Splitter extends StringProcessor{public String process(Object input){return Arrays.toString(((String)input).split(" "));}}class Apply{public static void process(Processor p,Object s){System.out.println("Using Process: "+p.name());System.out.println(p.process(s));}}/**疑问:(1)为什么要用到apply类呢?**/





原创粉丝点击