Java中的接口
1.什么是接口?
答:1).Java接口是一系列方法的声明,是一些抽象的集合;
2).一个接口只有抽象方法没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些方法实现可以具有不同的行为(功能)。
3).简单地说,接口就是特殊的抽象类,及所有方法都是抽象方法的抽象类就是Java中的接口(interface)。
2.接口都包含哪些内容?分别是什么?举例说明
答:[修饰符] interface 接口名 [extends 父接口名列表]{
[public] [static] [final] 常量;
[public] [abstract] 方法;
}
1).修饰符:可选,用于指定接口的访问权限,可选值为public。即使省略,也依然是public。
2).接口名:必选参数,用于指定接口的名称,接口名必须是合法的Java标识符。一般情况下,要求首字母大写。
3).extends父接口名列表:可选参数,用于指定要定义的接口继承于哪个父接口。当使用extends关键字时,父接口名为必选参数。父接口可以存在多个,用逗号隔开。
4).方法:接口中的方法只有定义而没有被实现。
3.使用接口是需要注意哪些事项?
答:1).接口是一种特殊的抽象类。
2).接口中没有变量,只能有public static final修饰的静态常量。三个修饰符可以省略。
3).接口中所有方法都是抽象方法,且默认就是public权限。
例:public interface Flayer {
public static final int TYPE = 1;
public abstract void fly();
public abstract void land();
public abstract void takeoff();
}
4.为什么要使用类实现接口?
答:1).类实现接口,本质上与类继承类相似,区别在于“类最多继承一个类,即单继类,而一个类却可以同时实现多个接口”,多个接口用逗号隔开即可。实现类需要覆盖所有接口中的所有抽象方法,否则该类也必须声明为抽象类。
2).接口是抽象类的,接口中没有任何具体方法和变量,所以接口不能进行实例化。接口定义的是多个类都要实现的操作,即“what to do”。类可以实现接口,从而覆盖接口中的方法,实现“how to do”。
5.如何实现接口?都包含哪些内容?
答:[修饰符] class <类名> [extends 父类名] [implements 接口列表]{}
1).修饰符:可选参数,用于指定类的访问权限,可选值为public、abstract和final。
2).类名:必选参数,用于指定类的名称,类名必须是合法的Java标识符。一般情况下,要求首字母大写。
3).extends 父类名:可选参数,用于指定要定义的类继承于哪个父类。当使用extends关键字时,父类名为必选参数。
4).impelments 接口列表:可选参数,用于指定该类实现的是哪些接口。当使用implements关键字时,接口列表为必选参数。当接口列表中存在多个接口名时,各个接口名之间使用逗号隔开。
6.如何使用接口继承接口?需要注意哪些事项?
答:1).Java接口继承接口的形式:
例:Interface3 extends Interface0, Interface1,interface......
2).*Java接口可以继承多个接口
*接口继承接口依然使用关键字extends,不要错用成implements
7.接口继承与类继承有什么区别?
答:1).Java类的继承是单一继承,Java接口的继承是多重继承。
8.为什么接口可实现多继承?
答:1).不允许类多重继承的主要原因是,如果A同时继承B和C,而B和C同时有一个D方法,A无法确定该继承哪一个。
2).接口全都是抽象方法继承谁都可以,所以接口可继承多个接口。
9.抽象类和接口的区别是什么?
答:
|
abstract class |
interface |
属性 |
不用限制 |
静态常量 |
构造方法 |
可有可无 |
没有 |
普通方法 |
可以有具体方法 |
必须是抽象方法 |
子类 |
单一继承 |
多重实现 |
1).abstract class 在Java语言中表示的是一种继承关系,
一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。
2).在abstract class中可以有自己的数据成员,也可以有非abstract的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在interface中一般不定义数据成员),所有的成员方法都是abstract的。
3).实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
4).接口中定义的变量默认是public static final型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
5).接口中的方法默认都是public,abstract类型的。
10.为什么要使用接口?
1).接口是设计层面的概念,往往由设计师设计,将定义与实现分离。
2).程序员实现接口,实现具体方法。
3).常见的类设计结构
11.什么是面向接口编程?
答:1).面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的思想,而是附属于面向对象思想体系,属于其一部分。
2).或者说,它是面向对象编程体系中的思想精髓之一。
3).面向接口编程的意思是指在面向对象的系统中所有的类或者模块之间的交互是由接口完成的。
12.如何使用Comparable接口?
答:1).Comparable接口中定义了比较方法,comparableTo,返回值为int(忽略泛型,后续学习)。
2).当int值为正数,表示大于;为负数,表示小于;为0,表示等于。
3).API中很多类实现了该接口,很多方法借助该接口。
4).通过使用Arrays.sort(Object[])方法,理解该接口的作用,进一步理解接口的作用。