Java中接口的作用

接口的作用

1、重要性:在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。

  2、简单、规范性:如果一个项目比较庞大,那么就需要一个能理清所有业务的架构师来定义一些主要的接口,这些接口不仅告诉开发人员你需要实现那些业务,而且也将命名规范限制住了(防止一些开发人员随便命名导致别的程序员无法看明白)。

当设计大的应用框架时,难免会出现代码耦合,而我们要做的就是让耦合出现在接口上,这样有利用框架的拓展和维护!也就所谓的面向接口编程。看看设计模式也可以加深你的认识!

接口的作用就是把使用接口的人和实现接口的人分开,实现接口的人不必要关心谁去使用,而使用接口的人也不用关心谁实现的接口,由接口将他们联系在一起。

接口是用来标记类的,不同的类属于不同的接口(通过向上转型),管理接口比管理各种各样的类方便,接口体现了抽象的观点,抽象就是“抽去像的部分”。

  3、维护、拓展性:比如你要做一个画板程序,其中里面有一个面板类,主要负责绘画功能,然后你就这样定义了这个类,可是在不久将来,你突然发现这个类满足不了你了,然后你又要重新设计这个类,更糟糕是你可能要放弃这个类,那么其他地方可能有引用他,这样修改起来很麻烦,如果你一开始定义一个接口,把绘制功能放在接口里,然后定义类时实现这个接口,然后你只要用这个接口去引用实现它的类就行了,以后要换的话只不过是引用另一个类而已,这样就达到维护、拓展的方便性。

编程时要面向抽象(接口)进行编程。程序是可拓展的。你在修改你具体的实现的类(或增加新的实现类)的时候呢,不需要去修改调用它的类;这个呢,是Java编程时候强调的”对拓展开放,对修改关闭“原则。在设计模式里面,很多都需要使用接口的。当然,这个也算是Java多态性的体现。

  4、安全、严密性:接口是实现软件松耦合的重要手段,它描叙了系统对外的所有服务,而不涉及任何具体的实现细节。这样就比较安全、严密一些(一般软件服务商考虑的比较多)。

5、接口只是一个规范,所以里面的方法都是空的。

假如我开了一个宠物粮店,声明所有宠物都可以来我这里买粮食,这就相当于一个接口,

public interface PetRestaurant {

public void buy();

}

当一只狗看到了,知道自己是宠物,所以它去实现这个接口

public class DogPet implements PetRestaurant {

@Override

public void buy() {

System.out.println("我是狗,我要买狗粮");

}

}

当一只猫看到了,知道自己也是宠物,所以也去实现这个接口

public class CatPet implements PetRestaurant {

@Override

public void buy() {

System.out.println("我是猫,我要买猫粮");

}

}

当狗和猫来我的店之前,我是不知道他们到底是什么,但是当他们来到我的店,我就知道一个要猫粮食,一个要狗粮食。因为他们都实现了 我这个接口,都可以买。下面这个类相当于一个接待顾客的类,即店小二,他接待所有实现了我这个宠物店接口的动物,传进来一个PetRestaurant 类型的宠物,注意,这个PetRestaurant 是接口

public class test {

public void buy(PetRestaurant pet)

{

pet.buy();

}

}

好了,这个时候我这个老板出现了,我可以给他们卖粮食了,相当于测试类

public class Tests {

public static void main(String[] args) {

PetRestaurant dog = new DogPet(); //实例化一个狗,相当于把狗顾客实例化

PetRestaurant cat = new CatPet();//实例化一个猫,相当于把猫顾客实例化

test t = new test(); //实例化一个店小二

t.buy(cat); //把猫交给店小二

t.buy(dog); //把狗交给店小二

}

}

这样运行的结果就是

我是猫,我要买猫粮

我是狗,我要买狗娘

你知道吗,整个过程我这个店主其实根本不知道来的到底是猫是狗还是其他什么,我只要有一个店小二,把这些来的不知什么动物都全部交给店小二,店小二就知道怎么去卖了,因为这些狗啊猫啊都实现了我这个宠物店的接口,而店小二就负责接待所有实现了我这个接口的动物。这就有一个好处,假如明天来了一头小猪,只要它实现了我这个接口,我只管交给店小二处理就OK了,我这个店小二根本不需要变化,我这个店主也只需要实例化一下这个动物就OK

你想,假如没有接口,会怎么办,来一个猫,我要去创造一个猫,还要实例化,来一只狗,我要创建一只狗,同样要实例化,还要配备专门的店小二去接待,就会相当麻烦 。

6、定义接口和直接写在类里面最大的区别,是接口可以定义关注局部的类型。这点在静态类型的语言中非常重要。

这种对局部的关注,在接口隔离原则中可以体现:http://www.2cto.com/kf/201406/309983.html

7、感觉接口最大的作用还是实现多态。而多态让程序结构的设计更加的优雅。

比如我们要设计一个执行线程的容器(java中已有实现好的线程池机制),要接收一个任务做参数,我们不可能给每一个任务去设计一个方法。接口就为所有的任务类型提供了一种标准,意思是你的任务只要符合这个标准,我的程序就可以处理。

java不支持多继承,但是可以实现多个接口;由于java是单继承的,但是很多时候我们都需要多继承,所以才有了接口这个概念。

Java通过Interface实现多继承。继承的一个好处呢,就是代码的复用,减少代码错误。在这个当中,接口等同于一种规范,就是要实现这个接口,你就必须实现接口的方法,完成相应的功能。如果没有接口,那么在实现的时候,很可能遗漏方法、或者定义的方法不统一。

对接口理解也不是很深刻,搜集的资料就这么多,望大家能对接口理解更深刻。

 

时间: 2024-10-23 14:24:10

Java中接口的作用的相关文章

对于java中接口的作用与理解

1,接口可以多继承. 2,接口可以添加公共的属性. 3,impl 方法被隐藏,让调用者清晰的看到方法和参数. 4,一个接口可以,可以多个实现. exp:List  list1 = new ArrayList();   List  list2 = new LinkList();    (ArrayList 与 LinkList 都实现了 List接口). 在实际应用中给我们带来的便利是. exp: 假设 UserDao 是个接口类,insertUser() 是 UserDao 接口中的一个抽象方法

java中接口中成员的定义

java中的接口的作用是提供编程框架,它作为统一的规范让其他类进行扩展,是java中非常优秀的设计. 这娃用以下代码总结了java中接口可以定义的成员以及它们默认被修饰的关键字: //外部接口的访问修饰符只能是public或默认修饰符 ,并且它的成员只能用public访问修饰符修饰, 接口不能用final修饰 public interface A { //成员变量,默认用public static final 修饰 String name="ahei"; //成员方法,默认用publi

C#学习笔记(17)——C#中接口的作用

说明(2017-7-17 23:50:48): 原文: 接口的作用 接口的作用(C#)(另一篇) C#接口是一个让很多初学C#者容易迷糊的东西,用起来好像很简单,定义接口,里面包含方法,但没有方法具体实现的代码,然后在继承该接口的类里面要实现接口的所有方法的代码,但没有真正认识到接口的作用的时候就觉得用接口是多此一举,当然你这样想那是绝对绝对错误的,比尔盖茨的微软请的员工都是比盖茨还聪明的人,他们的C#能添这样的多足吗?!关于接口的作用,网上有一位就真的深入浅出给我们做了很好理解的分析. 我们定

java中接口的定义与实现

1.定义接口 使用interface来定义一个接口.接口定义同类的定义类似,也是分为接口的声明和接口体,当中接口体由常量定义和方法定义两部分组成.定义接口的基本格式例如以下: [修饰符] interface 接口名 [extends 父接口名列表]{ [public] [static] [final] 常量; [public] [abstract] 方法; } 修饰符:可选,用于指定接口的訪问权限,可选值为public.假设省略则使用默认的訪问权限. 接口名:必选參数,用于指定接口的名称,接口名

java中super的作用

super()的作用 super可以用来访问超类的构造方法和被子类所隐藏的方法,如果子类中有方法与超类中的方法名称和参数相同,则超类中的方法就被隐藏起来,也就是说在子类中重载了父类中的方法. 引用父类中所隐藏的语法格式如下: super(参数列表)或super.方法名(参数列表) 下面通过代码展示一下super的用法: package cn.demo; public class Demo1 { public static void main(String[] args) { SubClass_A

java中接口的使用

我们虽然写了两个文件,但是,两个文件中我们都是用了一个包mah. 我们可以在类中调用接口,看下面的例子 这是一个接口 [[email protected] java]# vim Output.java package mah; public interface Output { public static final int MAX_CACHE_LINE = 120; public abstract void out(); public abstract void getData(String

Java中接口和抽象类的比较

Java中接口和抽象类的比较-2013年5月写的读书笔记摘要 1. 概述 接口(Interface)和抽象类(abstract class)是 Java 语言中支持抽象类的两种机制,是Java程序设计使用多态性的基础[[1]].(在面向对象语言中,接口的多种不同的实现方式即为多态.多态性是允许你将父对象设置成为和一个或更多的他的子对象的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自"Delphi4编程技术内幕").简单的说,就是一句话:允许将子类类型的

深刻理解Java中final的作用(一):从final的作用剖析String被设计成不可变类的深层原因

声明:本博客为原创博客,未经同意,不得转载!小伙伴们假设是在别的地方看到的话,建议还是来csdn上看吧(原文链接为http://blog.csdn.net/bettarwang/article/details/26744661),看代码和提问.讨论都更方便. Java中final的作用主要表如今三方面:修饰变量.修饰方法和修饰类.以下就从这两个方面来解说final的作用.在文末从final及类的设计安全性出发,论述了Java中String为何要被设计成不可变类. 1.final修饰变量 fina

Java中hashCode的作用

转  http://blog.csdn.net/fenglibing/article/details/8905007 Java中hashCode的作用 2013-05-09 13:54 64351人阅读 评论(17) 收藏 举报  分类: JAVA实用笔记(142)  版权声明:本文为博主原创文章,未经博主允许不得转载. 以下是关于HashCode的官方文档定义: [plain] view plain copy hashcode方法返回该对象的哈希码值.支持该方法是为哈希表提供一些优点,例如,j