Java语法基础:更彻底抽象的接口

1、接口的概念和定义语法

接口的概念:
接口是多个类共同的公共行为规范,这些行为都是与外部交流的通道,以为接口需要提供一组公用的方法,供子类去实现
从多个相似的类中抽象出来的规范,接口不提供任何的实现,接口的出现的目的就是规范和实现的分离的设计哲学。
面向接口编程的好处:尽量降低各模块之间的耦合,为系统提供工号的拓展性和可维护性。

语法:接口的定义

[修饰符] interface 接口名 extends 父接口1,父接口2...{
    
    
	零个到多个常量定义...
	零个到多个抽秀方法定义...
}

说明:

  1. 修饰可以是public 或者省略(省略的话默认采取权限访问控制符,只有在相同的包结构中才访问到该接口)
  2. 接口的命名的规则和类名采取的命名规则相同,要遵循Java可读性规范,尽量做到见名知意,应该由多个有意义的单词组成,每个单词的首字母大写。
  3. 一个接口可以有多个直接的 父接口,但是接口只能继承接口,不是继承类。

对于接口中的常量:

// 在接口中如果省略了public static final修饰符,系统会自动添加上
int MAX_SIZE = 50;
public static final int MAX_SIZE = 50 ; 

例如:
下面在接口中定义一个常量和一个抽象方法

public interface Write{
    
    
	int MAX_WORD = 100;
	// 这里等效于public static final int MAX_WORD = 100;
	void write();
}

可以在类型直接使用接口的静态方法

public class TestGetMaxWord{
    
    
	public static void main(String[] args){
    
    
		// 可以直接获取
		System.out.println("从接口Write中获取到MAX_WORD:" + Write.MAX_WORD)
	}
}

接口是完全支持多继承的,也就是一个接口可以有多个直接父接口,一旦子接口继承了某个父接口,就获得了父接口里定义的所有抽象方法、常量属性、内部类和枚举类定义。

interface InterfaceA{
    
    
	int PROP_A = 5;
	void testA();
}

interface InterfaceB{
    
    
	int PROP_B = 6;
	void testB();
}
interface InterfaceB extends InterfaceA,InterfaceB{
    
    
	int PROP_C = 7 ;
	void testC();
}

public class TestInterfaceExtends {
    
    
	pulbic static void main(String[] args){
    
    
		System.out.printl("PROP_A"+InterfaceA.PROP_A);
		System.out.printl("PROP_B"+InterfaceA.PROP_B);
		System.out.printl("PROP_C"+InterfaceA.PROP_C);
	}
}

2、Java 8 新增的接口特性

首先在JDK8之前,定义接口类中,类中的方法都是抽象的,并且不能存在静态方法,所有的方法命名规则都是使用了

  • public 【返回类型】【方法名】【参数】throws exception

在jdk8中接口新增了两种方法,default方法和static方法。

这说明了在JKDK8之后,在接口中可以有具体的方法实现,只不过需要被 default 和static修饰
例如:下面的情况现在是允许在Java的接口中出现的


public interface Calculate {
    
    
    int add(int a, int b);

    int sub(int a, int b);
	// 默认方法
    default int del(int a, int b) {
    
    
        return a/b;
    }
	// 静态方法
    static int multiply(int a,int b) {
    
    
        return  a*b;
    }
}

3、面向接口编程

接口体现的是一种规范和实现分离的设计哲学,充分利用接口可以极好降低程序各个模块的耦合度,从而提高系统的可维护性和拓展性

基于这种原则,很多框架设计理论都提倡 "面向接口"编程,而不是面向实现类编程,来达到降低程序的耦合的目的。

猜你喜欢

转载自blog.csdn.net/Hicodden/article/details/110367500