java 接口详解---(看这就够了)

一、接口的概念

官方解释:(该了解的还是得了解)

  • Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

我的解释:

  • 接口是一种“协议”、是一份“契约”,是一种规范。
    打个比方:我使用你的产品,那就必须遵循你的规定,不然就乱套了

二、接口的组成

接口也是一个类、但是它是一个抽象类

  1. 方法只能是抽象方法(public abstract),省略也是
  2. 变量只能是全局常量(public static final),省略也是
  3. 没有构造器

三、接口的定义

直接上代码

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();
	}
}

结果截图:
在这里插入图片描述
分析:

  1. 上面的代码可以说明接口的应用。
    • 比方说生产一辆汽车,我们可以直接组装轮子、组装发动机等,而这些轮子和发动机都不是我生产的,而是通过进口的,我使用它,是不是要遵循它的“契约”呢。
    • 再打个比方:比如说德国生产的轮子最大时速只能为300km/h,你接过来用不可能就变成500km/h了吧
  2. 上面的匿名类也是一个类,它只不过是直接写在里面罢了,和普通的接口实现类没有什么大不同,有兴趣的可以去学习一下
六、分享交流

最后有兴趣一起交流的,可以关注我的公众号:这里你能够学到很实用的技巧,不是常用的我不说,公众号回复提取码即可获取以下学习资料啦啦啦啦,喜欢就拿去吧!!

(链接时常会失效,若出现此类情况,可以加我微信:17722328325(加时请备注:学习资料))

  1. Java web从入门到精通电子书

  2. Python机器学习电子书

  3. Python400集(北京尚学堂)

  4. JavaScript项目案例、经典面试题

  5. Java300集(入门、精通)

  6. Java后端培训机构录集(同事培训内部提供)

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章