文章目录
- 一、接口的概念
- 二、接口的组成
- 三、接口的定义
- 四、接口的使用
- 五、代码说话
- 六、分享交流
一、接口的概念
官方解释:(该了解的还是得了解)
- Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
我的解释:
- 接口是一种“协议”、是一份“契约”,是一种规范。
打个比方:我使用你的产品,那就必须遵循你的规定,不然就乱套了
二、接口的组成
接口也是一个类、但是它是一个抽象类
- 方法只能是抽象方法(public abstract),省略也是
- 变量只能是全局常量(public static final),省略也是
- 没有构造器
三、接口的定义
直接上代码
interface A{
//变量省略修饰符号,也是public static final
int FLAG = 1;
//方法省略修饰符,也是public abstract
void drive();
}
四、接口的使用
由于接口里面存在抽象方法,所以接口对象不能直接使用关键字new进行实例化。接口的使用原则如下:
1. 接口必须要有子类,但此时一个子类可以使用implements关键字实现多个接口;
2. 接口的子类(如果不是抽象类),那么必须要覆写接口中的全部抽象方法;
3. 接口的对象可以利用子类对象的向上转型进行实例化。
4. 或者直接用实现接口的匿名类对象来调用接口中的方法
敲黑板:3 .4点很重要,也很常用
五、代码说话
光看是不行的,小伙伴一起来撸代码吧
package Java_study;
/**
* 接口学习
* 1.接口与接口之间也是继承关系
* 2.接口中的变量只能是常量,为public static final
* 3.接口中的方法为抽象方法,为public abstract
* @author 放牛娃学编程(微信公众号)
*
*/
//定义一个轮子接口(包含轮子大小、时速)
interface wheel{
//变量省略修饰符号,也是public static final
int SIZE =200;
//方法省略修饰符,也是public abstract
void speed();
}
//定义一个发动机接口(包含功率、寿命)
interface engine{
//发动机寿命
public static final int LifeTime = 20;
//发动机功率
public abstract void power();
}
//宝马车类实现wheel、engine接口
class bM implements wheel,engine{
@Override
public void speed() {
// TODO Auto-generated method stub
System.out.println("我的时速可以达到240km/h");
}
@Override
public void power() {
// TODO Auto-generated method stub
System.out.println("我的发动机功率最高可以达到10000w");
}
}
public class Interface_study02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//接口的对象可以利用子类对象的向上转型进行实例化
wheel w = new bM();
engine e = new bM();
w.speed();
e.power();
System.out.println("------------------");
//实现接口的匿名类对象
wheel w2 = new wheel() {
@Override
public void speed() {
// TODO Auto-generated method stub
System.out.println("我的时速可以达到300km/h----匿名类");
}
};
w2.speed();
}
}
结果截图:
分析:
- 上面的代码可以说明接口的应用。
- 比方说生产一辆汽车,我们可以直接组装轮子、组装发动机等,而这些轮子和发动机都不是我生产的,而是通过进口的,我使用它,是不是要遵循它的“契约”呢。
- 再打个比方:比如说德国生产的轮子最大时速只能为300km/h,你接过来用不可能就变成500km/h了吧
- 上面的匿名类也是一个类,它只不过是直接写在里面罢了,和普通的接口实现类没有什么大不同,有兴趣的可以去学习一下