Java 8 改进的接口 抽象类 枚举类

本文详细介绍了Java 8中接口、抽象类和枚举类的改进。讨论了接口的基本语法,包括静态常量和默认方法;Java初始化块的作用和执行顺序;抽象类与抽象方法的定义规则;以及枚举类的特殊性质,如实现接口、包含抽象方法等。通过示例代码和解释,帮助读者理解这些概念。
摘要由CSDN通过智能技术生成

1. 定义接口的基本语法:

[修饰符] interface 接口名 extends 父接口1, 父接口2, ...
{
   
	零个到多个常量的定义...
	零个到多个抽象方法定义...
	零个到多个内部类,接口,枚举定义...
	零个到多个默认方法或类方法定义...
}	

详细说明

  • 修饰符可以是public 或者省略,如果省略了public访问控制符,则默认采用包权限访问控制符,即只有在相同包结构下才可以访问该接口。
  • 接口名应与类名采用相同的命名规则
  • 一个接口可以有多个直接父接口,但接口只能继承接口,不能继承类

由于接口定义的是一种规范, 因此接口里不能包含构造器初始化块定义。接口里可以包含成员变量(只能是静态常量),方法(只能是抽象实例方法,类方法或默认方法),内部类(包括内部接口,枚举)定义。

接口中的所有成员都是public访问权限 ,定义接口成员时,可以省略访问控制修饰符,如果指定访问控制修饰符,则只能使用public访问控制修饰符。

对于接口里定义的静态常量而言,它们是与接口相关的,因此系统会自动为这些成员变量添加staticfinal两个修饰符。也就是说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.<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值