![](https://img.haomeiwen.com/i10196679/cb4746c2d7c9cdf3.jpg)
接口基础:
1、什么是接口: 接口也是一种引用类型,可以等同看做类
2、如何定义接口,语法:
[修饰符] interface 接口名 {}
3、接口其实是一个特殊的抽象类,特殊再接口是完全抽象的
4、接口中没有构造方法,接口也无法被实例化
5、接口和接口之间可以多继承
6、一个类可以实现多个接口。(这里的实现可以等同看作继承)
7、一个非抽象的类实现接口,需要将接口中所有的方法“实现、重写、覆盖”
8、接口中只能出现:常量、抽象方法
我们统一举个栗子(好好看吧):
public interface A{
// 常量(必须用public static final 修饰)
public static final String success = "success";
public static final double PI = 3.14;
// public static final是可以省略的
byte MAX_VALUE = 127; // 常量
// 抽象方法(接口中所有的抽象方法都是public abstract)
public abstract void m1();
// public abstract 是可以省略的
void m2();
// void m3() {}; 错误哦
// A(){}; 错误哦
}
interface B{
void m1();
}
interface C{
void m2();
}
interface D{
void m3();
}
interface E extends B,C,D{
void m4();
}
// implements 是实现的意思,是一个关键字
// 一个类可以实现多个接口
class MyClass implements B,C{
@Override
public void m2() {
// TODO Auto-generated method stub
}
@Override
public void m1() {
// TODO Auto-generated method stub
}
}
接口作用:
1、可以使项目分层,所有层面向接口开发,开发效率提高
2、接口使代码和代码的耦合度降低,就像内存条和主板的关系,可插拔可以随意的切换
注意:
接口和抽象类都能完成某个功能,优先需求安泽接口。因为几口除了可以实现多继承,并且一个类除了实现接口之外,还可以去继承其他类,(保留了类的继承)
我们举个栗子(比较不好理解,认真体会)
汽车和发动机之间的接口
生产汽车的厂家面向接口生产
生产发动机的厂家面向接口生产
发动机接口:
public interface Engine {
// 所有发动机都可以启动
void start();
}
YAMAHA 面向Engine并实现接口:
public class YAMAHA implements Engine{
@Override
public void start() {
// TODO Auto-generated method stub
System.out.println("Y run go");
}
}
HONDA 面向Engine并实现接口:
public class HONDA implements Engine{
@Override
public void start() {
// TODO Auto-generated method stub
System.out.println("H run go");
}
}
生产汽车类Car面向Engine接口编程
public class Car {
// 引擎
// 面向接口编程
Engine e;
// Constructor
Car(Engine e){
this.e = e;
}
// 汽车能测试引擎
public void testEngine() {
e.start();// 面向接口调用
}
}
测试类Test:
public abstract class Test{
// 入口
public static void main(String[] args) {
// 1、生产引擎
Engine e1 = new YAMAHA();
// 2、生产汽车
Car c = new Car(e1);
//3、测试引擎
c.testEngine();
// 换HONDA
c.e = new HONDA();
c.testEngine();
}
}
输出:
Y run go
H run go
在栗子中可看出接口使程序更加灵活
网友评论