您的位置:首页 > 编程语言 > Java开发

java学习笔记之接口

2015-03-19 15:11 204 查看
1、接口

面向对象的思想是将所有的事物都看作一个对象,对象的复杂性也导致了我们生活的多样性,但多样性之中含有共性。比如人有很多种,有学生、有老师、有医生。但所有的人正常人都有他们的共性,比如会跑步,会说话,会思考。所以跑步、说话、思考可以是从特性中抽象出来得共性的东西。Java针对这一特性设计出了接口这样一个概念。虽然每个正常的人都会说话、会跑步、会思考,但他们实现这些行为的方式是不同的,有的人说话声音大,内容有条理;有的人说话声音小,但有感染力。无论是怎样的方式他们都具有说话这样的功能。因此有了多态的概念。我们可以说学生是一个正常的人,但不可以说人是学生。所以我们可以把学生这个对象赋值给人这个接口。一个学生可能是一个人,也可能是一个动物,所以他具有人和动物的共性。所以学生可以同时实现动物和人这两个接口。Java不支持多继承,所以通过实现多个接口,实现多继承。

接口是对java的抽象思想的进一步深化,在 《Thinking in java》一书中这样描述接口“The interface keyword takes the concept of abstractness one step further”。接口是对类的进一步抽象,与抽象类不同。抽象类是将一个类中的一个或者几个方法进行抽象,所抽象的方法仅有返回值和方法名,没有具体实现。由于抽象类方法必须被实现,所以抽象类的抽象方法的访问权限必须是public。而接口则是抽象类的进一步抽象,接口内所有的方法都没有具体实现,仅有方法名称和返回类型。类通过implements关键字类实现接口,接口的实现类必须实现接口内的所有方法,但经常会遇到实现一个接口但只想实现它其中的一个方法,这时可以采用适配器模式。一个实现类可以实现一个或者多个接口,这弥补了java单继承的不足。实现类可以有自己的Field,自己的Method。

public interface Dog {

void sayHello();

}

public class Jingba implements Dog{

@Override

public void sayHello() {

System.out.println("I'm jingba");

}

}

public class JinMao implements Dog {

@Override

public void sayHello() {

System.out.println("I'm jinmao");

}

}

public class TestInterface {

public staticvoid main(String[] args){

Dog dog1 = new Jingba();

Dog dog2 = new JinMao();

dog1.sayHello();//I’m jingba

dog2.sayHello();//I’m jinmao

}

}


2、接口的Field

接口是一个抽象的模板,模板是不能够被改变的,接口的Field也只能被接口本身所拥有,所以接口的Field都是static和final,不能够被修改且是接口所有的。在java se5之前,创建一组常量(constant)通常是采用接口方式完成,但在java se5以后通常是采用enum来定义常量组。

public interface Months {
int SPRING = 1;
int SUMMER = 2;
int AUTUEM    = 3;
int WINTER = 4;
}


3、接口实现中的冲突问题

由于java类可以实现多个接口,因此,如果接口中有共同的函数名,但参数类型、返回值类型不同,就会造成冲突。这种冲突应该避免。

4、防止接口被滥用

接口是一个很强大的工具,它可以帮助降低程序与程序之间的耦合性。但是并不是所有的类都需要有接口,是否需要提取出接口还要依据具体情况。

5、接口的继承

一个接口可以继承另一个接口并拥有另一个接口的抽象方法。

public interface animal {

public void run();

}

public interface Dog extends animal{

void sayHello();

}

Dog继承了animal之后就拥有了animal的方法 run(),Dog的实现类也必须实现抽象方法run
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: