接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
接口与类的区别:
接口不能用于实例化对象。
接口没有构造方法。
接口中所有的方法必须是抽象方法。
接口不能包含成员变量,除了 static 和 final 变量。
接口不是被类继承了,而是要被类实现。
接口支持多继承。
接口特性:
接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
抽象类和接口的区别

  1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
  2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
  3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
  4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。
  • 实现接口三步走
  • 1.定义接口,相当于定义了抽象方法
  • 2.接口不能直接拿来使用,需要有实现类来实现接口
  • 格式:
• public class 实现类名称 implements 接口名称{

• // …
• }
  • 接口的实现类必须覆盖重写(实现)接口中所有的抽象方法。
  • 实现:去掉abstract关键字,加上方法体大括号。
  • 3.创建实现类的对象,进行使用。
public interface myAbstract {
	//这是一个抽象方法
	public abstract void MyAbstract();
	//这也是一个抽象方法
	abstract void MyAbstract1();
	//这也是一个抽象方法
	public void MyAbstract2();
	//这也是一个抽象方法
	void MyAbstract3();
}
public class myAbstractimpl implements myAbstract{

	@Override
	public void MyAbstract() {
		System.out.println("这是第一个借口");
	}

	@Override
	public void MyAbstract1() {
		System.out.println("这是第二个借口");
	}

	@Override
	public void MyAbstract2() {
		System.out.println("这是第三一个借口");
	}

	@Override
	public void MyAbstract3() {
		System.out.println("这是第四一个借口");
	}
	

}
public class 实现Abstract {
	public static void main(String[] args) {
		myAbstractimpl Abs = new myAbstractimpl();
		
		Abs.MyAbstract();
	}
}

默认方法解决了接口升级问题,避免实现类对于接口新增的抽象方法全部重新覆盖
格式:

public default void Mystractdeflault(){
}
public interface myinterfacedefault {
	//这是一个抽象方法
	public abstract void Mystract();
	//这是一个默认方法
	public default void Mystractdefault() {
		System.out.println("使用接口默认方法");
	}
}