文章目录
1. 定义接口的基本语法:
[修饰符] interface 接口名 extends 父接口1, 父接口2, ...
{
零个到多个常量的定义...
零个到多个抽象方法定义...
零个到多个内部类,接口,枚举定义...
零个到多个默认方法或类方法定义...
}
详细说明
:
- 修饰符可以是
public
或者省略,如果省略了public
访问控制符,则默认采用包权限访问控制符,即只有在相同包结构下才可以访问该接口。 - 接口名应与类名采用相同的命名规则
- 一个接口可以有多个直接父接口,但接口只能继承接口,不能继承类
由于接口定义的是一种规范, 因此接口里不能包含
构造器
和初始化块
定义。接口里可以包含成员变量(只能是静态常量),方法(只能是抽象实例方法,类方法或默认方法),内部类(包括内部接口,枚举)定义。
接口中的所有成员都是
public
访问权限 ,定义接口成员时,可以省略访问控制修饰符,如果指定访问控制修饰符,则只能使用public
访问控制修饰符。
对于接口里定义的静态常量而言,它们是与接口相关的,因此系统会自动为这些成员变量添加
static
和final
两个修饰符。也就是说public static final,在接口中定义成员变量时,不管是否使用public static final
修饰符,接口里的成员变量总是使用这三个修饰符来修饰的。而且接口里没有构造器和初始化块,因此接口里定义的成员变量只能在定义时指定默认值。
接口里定义的方法只能是抽象方法,类方法或默认方法,因此如果不是定义默认方法,系统将自动为普通方法添加
abstract
修饰符,定义接口里的普通方法时不管是否使用public abstract
修饰符,接口里的普通方法总是使用public abstract
来修饰。接口里的普通方法不能有方法实现(方法体); 但类方法(static
修饰),默认方法都必须有方法实现(方法体)
接口里定义的内部类,内部接口,内部枚举类
默认
都采用public static
两个修饰符,不管定义时是否指定这两个修饰符,系统都会自动使用 public static 对它们进行修饰
2. Java 初始化块
Java 使用构造器
来对单个对象
进行初始化操作,使用构造器先完成整个Java对象的状态初始化,然后将Java对象返回给程序,从而让Java对象的信息更加完整。与构造器类似的是初始化块,它也可以对Java对象进行初始化操作。
初始化块是Java类中可以出现的第4中成员,一个类里可以有
多个初始化块
,相同类型的初始化块之间有顺序:前面定义的初始化块先执行,后面定义的初始化块后执行。
- 初始化块的语法格式:
[修饰符] {
// 初始化块的可执行代码
...
}
初始化块的修饰符只能是
static
,使用static
修饰的初始化块被称为静态初始化块
。初始化块里面的代码可以包含任何可执行语句
,包括定义局部变量
,调用其他对象的方法,以及使用分支,循环语句等
。
当创建Java对象时,系统总是
先调用该类里定义的初始化块
,再执行构造方法
。如果一个类里定义了2个普通初始化块,则前面定义的初始化块先执行,后面定义的初始化块后执行。
初始化块虽然也是Java 类的一种成员,但它没有名字,也就没有标识,因此
无法通过类,对象来调用初始化块
。初始化块只在创建Java对象时隐式执行,而且在执行构造器之前执行
。
- 示例程序:
public class Main {
// 先执行初始化块将a实例变量赋值为6
{
a = 6;
}
// 再执行将a实例变量赋值为9
int a = 9;
public static void main(String[] args) {
//下面代码将输出9
System.<