Java教程:面向对象之Java接口

Java接口的相关描述:
Java中关于接口的特点:
1、接口中的所有方法都是共有的抽象的方法,public abstract 可以省略
2、在接口中,可以定义属性,属性一定是公有的(public)静态(static)常量(final)。
接口不能实例化对象,但可以实现对象,一个实现接口的类必须实现接口里面所有方法,否则就必须声明抽象类。
接口类型可以声明一个变量,他们可以成为一个空指针,或者被绑定在一个以此接口实现的对象。
final 关键字:表示最终的
1、当修饰类的成员属性,表示最终的变量,也就是不能改变的量——常量,常量要么有初始值,要么通过构造方法赋值。
2、当修饰类的成员方法,表示最终的方法。也就是不能重写的方法。
3、当修饰类是,表示最终的类。也就是不能继承的类。
static 关键字:表示静态的,隶属于类不属于实例,属于类
如何访问static修饰的类的成员属性
类.成员属性
如何访问static修饰的类的成员方法
类.成员方法
在同一类中,既有静态(static)的成员和非静态的成员
静态成员不能访问非静态成员。
非静态成员可以访问静态成员。
implements 关键字:表示实现一个接口
一个类实现接口,需要把接口中的方法提供实现。
接口和抽象类的关系:
1、由于接口本身不是类,所以,接口不具备类的特性。抽象类是类,拥有类的特性,只是不能 实例化。
2、接口中的方法都是抽象方法,而抽象类,可以拥有抽象方法。
3、类可以实现多个接口。多个接口之间,使用逗号分隔。
4、接口可以继承接口。一个接口,可以继承多个接口。使用extends关键字。
5、类是单继承、多实现。
Java抽象类、类、Java接口的对比:
1、是否有具体的方法体:Java抽象类、类可以存在具体的方法体,而Java接口不可以存在具体的方法体(接口中方法必须位抽象方法)。
2、是否能够实例化对象:接口、抽象类不能实例化对象,而类可以实例化对象。
3、是否有构造方法:类、抽象类有构造方法,而接口不存在构造方法。
4、存在成员变量的类型:抽象类、类的成员属性可以是任何类型的,而Java接口 public static final 类型的。
5、Java接口可以存静态方法和静态变量(用 static 修饰的),而在Java接口中不能存在静态方法和静态变量。
6、一个类可以继承一个抽象类,而一个类可以继承多个Java接口。
7、接口不是被继承,是被类实现,接口支持多继承。
Java 8 之后 接口中可以使用 default 关键字修饰的非抽象方法。
注:JDK 1.8 以后,接口里可以有静态方法和方法体了。
注:JDK 1.8 以后,接口允许包含具体实现的方法,该方法称为"默认方法",默认方法使用 default 关键字修饰。更多内容可参考 Java 8 默认方法。
注:JDK 1.9 以后,允许将方法定义为 private,使得某些复用的代码不会把方法暴露出去。更多内容可参考 Java 9 私有接口方法。
接口的声明:
[可见度] interface 接口名称 [extends 其他的接口名] {
// 声明变量
// 抽象方法
}
接口的实现
当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。
重写接口中声明的方法时,需要注意以下规则:
类在实现接口的方法时,不能抛出强制性异常,只能在接口中,或者继承接口的抽象类中抛出该强制性异常。
类在重写方法时要保持一致的方法名,并且应该保持相同或者相兼容的返回值类型。
如果实现接口的类是抽象类,那么就没必要实现该接口的方法。
在实现接口的时候,也要注意一些规则:
一个类可以同时实现多个接口。
一个类只能继承一个类,但是能实现多个接口。
一个接口能继承另一个接口,这和类之间的继承比较相似。
本文作者:刘广法,转载注明出处。