在接口(interimpl)中,声明的变量初始化,自动变成静态的public 全局静态常量,以后这个值只能用而不能赋值。接口中没有静态程序段(static {}),也没有初始化程序段({})。可以写方法,如:(int pf (int i ))
抽象方法可以使用函数接口:
//定义函数接口
@FunctionalInterface
public interface InterImpl {
//定义1个常量
public final static int id = 3;
//定义抽象方法
public abstract int pf(int i);
//定义实现方法,可以是静态可以是动态,此处是静态,可以写个方法
static int lf(int i ){
return i*i*i;
}
//声明接口
接口 = 常量 + 抽象方法
interface Inter{
常量+抽象方法 }
//使用接口
接口一般不直接实例化,使用接口用的是接口的实现类
class InterImpl implements Inter{
}
使用方法:
InterImpl ii = new InterImpl();
Inter in = new InterImpl();
java 1.8 接口有新增default 实现方法 static 实现方法,如果接口有且只有一个抽象方法,此接口自动为函数式接口(可以使用lambda表达式来作为参数直接使用,可以避免内部匿名类的出现,语法更加简捷)
函数式接口只能有一个抽象类方法,当使用多个抽象类式程序会报错:
public abstract int pf(int i);
show ();
这写会进行报错
用接口一般是使用接口的抽象类,函数接口可以使用lamoda表达式,旁边会有λ的符号,例如:
public abstract int pf(int i);
InterImpl ii = new InterImpl() {
@Override
public int pf(int i) {
return i * i;
}
接口的实现:
static void version(){
System.out.println("hello world");
}
static void Helloword(){
System.out.println("hello world,你好,世界");
}
//默认方法
default int sum(int a, int b){
return a+b;
}
引用接口:
System.out.println(ii.pf(3));
System.out.println(ii.sum(3, 5));
InterImpl.version();
InterImpl.Helloword();
接口可以继承:
/**
* 文字描述:声明A类时继承B类,B是父类,A是B类的子类,同时实现
* C 接口 D接口 E接口 F接口
* java 面向对象类单继承,多实现
*/
public class A extends B implements C,D,E,F{
}
//如下代码是合理的
B a1 = new A();
C c1 = new A();
F c1 = new A();
E e1 = new A();
声明接口
public interface C{}
public interface D{}
public interface E{}
//描述:声明F接口,继承C接口D接口E接口
//在java面向对象开发中,接口是可以多继承的
public interface F extends C,D,E{
}
接口 和 抽象类区别?
函数式接口 java1.8新技术 必须是一个接口,有且只有一个抽象方法,此接口主要用于lambda表达式编程, 接口作为参数
interface MyUtil{
int pf(int i);
}
前后端配置开发时,接口使用量大,更加规范,
JDBC组件,架构使用的就是接口,所以JDBC里边几乎全是接口
Connectin 对象不是类 是接口
接口最终使用的是 implements 实现类 或 lambda表达式 抽象类 最终使用的是子类 可以重写 重载相关的方法