关于java接口的一些重要的点
2015-10-30 10:36
435 查看
一.接口是java中一个很重要的元素,他的好出很多
首先,接口是作为一个标准,让实现接口的类实现具体的功能
其次,java 8 中的接口不再是一个没有任何实现具体功能方法的特殊类了,java 8 允许接口里有默认的方法
就是用default修饰的方法,这种方法是能被实现接口的类所继承的,另外java 8 还增加了static修饰 的方法
无需解释,static修饰的东西,可以用类名或接口名直接调用,他属于类和接口本身。
二.说了这么多,接口到底有什么用呢
是的,我刚开始认为接口没有什么用,但是我现在体会到接口的妙用了,很多对java不熟悉的程序员认为接口根本用处不大
但是,接口的方便在于,他可以利用多态性(父类引用指向子类实例化对象)作为方法的形式参数来接收它实现类。而然,这又有什么用呢。
它的用处在于:1.他定义了一个标准,拿一个例子来说,一台电脑需要插一个内存条,内存条要满足可读可写等功能,如果不用接口电脑使用一种型号的内存条
那么用户会怎么想,为了换,就只能换一种型号的。要是那种型号的过时不生产了,市场上只能买更先进的内存条呢。
如果使用了接口,每一种型号的内存都要实现接口的标准,要可读可写,无论是产品更新还是换代,都能有标准规定的功能,电脑是不是就能适应各种的内存条,从而接纳范围广了呢。
java中的接口也是一个样,他的接纳要广,他能接纳任何实现它的了类,所以只要实现了接口,就累做为方法的实际参数传入。这也实现了程序的优化,如果要改动程序,你只要改动实现接口的类就好了,并不要改动整个程序,和各种参数。
三.编程时也要注意
如果很多类的功能几乎一样,那么要以对象作为参数时,最好把所有实现相同功能的类定义一个接口,用接口来接纳参数。
下面简单的示范了接口的用途
首先定义了一个接口
接下来,我们就要使用接口了
首先,接口是作为一个标准,让实现接口的类实现具体的功能
其次,java 8 中的接口不再是一个没有任何实现具体功能方法的特殊类了,java 8 允许接口里有默认的方法
就是用default修饰的方法,这种方法是能被实现接口的类所继承的,另外java 8 还增加了static修饰 的方法
无需解释,static修饰的东西,可以用类名或接口名直接调用,他属于类和接口本身。
二.说了这么多,接口到底有什么用呢
是的,我刚开始认为接口没有什么用,但是我现在体会到接口的妙用了,很多对java不熟悉的程序员认为接口根本用处不大
但是,接口的方便在于,他可以利用多态性(父类引用指向子类实例化对象)作为方法的形式参数来接收它实现类。而然,这又有什么用呢。
它的用处在于:1.他定义了一个标准,拿一个例子来说,一台电脑需要插一个内存条,内存条要满足可读可写等功能,如果不用接口电脑使用一种型号的内存条
那么用户会怎么想,为了换,就只能换一种型号的。要是那种型号的过时不生产了,市场上只能买更先进的内存条呢。
如果使用了接口,每一种型号的内存都要实现接口的标准,要可读可写,无论是产品更新还是换代,都能有标准规定的功能,电脑是不是就能适应各种的内存条,从而接纳范围广了呢。
java中的接口也是一个样,他的接纳要广,他能接纳任何实现它的了类,所以只要实现了接口,就累做为方法的实际参数传入。这也实现了程序的优化,如果要改动程序,你只要改动实现接口的类就好了,并不要改动整个程序,和各种参数。
三.编程时也要注意
如果很多类的功能几乎一样,那么要以对象作为参数时,最好把所有实现相同功能的类定义一个接口,用接口来接纳参数。
下面简单的示范了接口的用途
首先定义了一个接口
public interface Command//定义了一个接口,接口里有一个要实现的方法 { void process(int [] target); }上面的定义了一个对数组的process处理方法,具体要怎么处理,就是下面实现接口的两个类的事了
public class AddCommand implements Command { @Override public void process(int[] target) { int sum=0; for(int i=0;i<target.length;i++) { sum=sum+target[i]; } System.out.println(sum); } } public class PrintCommand implements Command { @Override public void process(int[] target) { for(int i=0;i<target.length;i++) { System.out.print(target[i]+" "); } } }这两个类都实现了处理方法,一个打印,一个输出。
接下来,我们就要使用接口了
public class ProcessArray { public void Process(int [] target,Command cmd) { cmd.process(target);//根据传入的具体的对象,他们会做出不同的动作 } }上面是一个处理类,他的一个方法的形参用接口作为接纳实现对象参数
public class CommandText { public static void main(String[] args) { ProcessArray p=new ProcessArray(); int [] a={4,-1,7,9}; //使用接口作为方法的参数,可以传入实现接口的对象 p.Process(a, new PrintCommand()); System.out.println(); //无论那个类实现了接口,我们都可以用接口作为方法的形参来传入参数,这样我们就不用关心实现类里的具体实现方法了 p.Process(a, new AddCommand()); } }输出的结果就省略了,上面就展示了接口的重大作用。
相关文章推荐
- java中获取根异常并进行分发处理
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
- 【Java开发】--jdom解析xml-删除xml
- Spring4+SpringMVC+Mybatis3+MySQL5项目搭建
- Spring framework3.2整合hibernate4.1报错:No Session found for current thread
- maven项目打包
- 使用java.util.concurrent.ThreadFactory来创建线程
- eclipse中和android studio中进行单元测试
- 【Java开发】--jdom解析xml-修改xml
- int 数字0123456转汉子零一二三四五六,后台Java
- eclipse背景颜色修改插件color theme
- spring web mvc 详解
- Android----Eclipse 停在 Android SDK Content Loader
- 【Java开发】--jdom解析xml-获取xml
- myeclipse创建web项目
- Java的深拷贝和浅拷贝
- JAVA ClassLoader
- java.lang.OutOfMemoryError: Java heap space
- 009 The Interfaces In JAVA(官网文档翻译)
- MyEclipse非常方便的快捷键