Java接口再述

之前把抽象类和接口放在一起讲了,觉得还是太草率了,现在重新讲一下这个接口吧。
接口也是一种引用类型,可以等同看做类

  1. 如何定义接口,语法:
    [修饰符] interface 接口名{ }

  2. 接口中只能出现:常量、抽象方法

  3. 接口其实是一个特殊的抽象类,特殊在接口是完全抽象的

  4. 接口中没有构造方法,接口也无法被实例化

  5. 接口和接口之间可以多继承

  6. 一个类可以实现多个接口(这里的实现可等同看作继承)

  7. 一个非抽象的类实现接口,需要将接口中所有的方法实现/重写/覆盖

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();
		
}
interface B{
	void m1();
}
interface C{
	void m2();
}
interface D{
	void m3();
}
interface E extends B,C,D{ // 接口和接口之间可以多继承
	void m4();
}

//implements是实现的意思,是一个关键字
//implements和extends意义相同
class MyClass implements B,C{ // 一个类可以实现多个接口
	public void m1() {  // 一个非抽象的类实现接口,
		                // 需要将接口中所有的方法实现/重写/覆盖
		
	}
	public void m2() {
		
	}
}
//一个非抽象的类实现接口,需要将接口中所有的方法实现/重写/覆盖
class F implements E{
	public void m1() {}
	public void m2() {}
	public void m3() {}
	public void m4() {}	
}

我就是个憨憨,这段代码可以运行吗?
不可以
没有主方法运行个锤子,我就不一样了
我看视频以为人家可以运行,谁知道他是编译成功,8是运行!!!于是我傻乎乎地去问别人。
在这里插入图片描述
煜而好学,不耻上问,憨憨是也。

下面这段代码实例才是可以运行的:

/*
客户业务接口
接口作用:
1.可以使项目分层,所有层都面向接口开发,开发效率提高
2.接口使代码与代码之间的耦合度降低,就像内存条和主板,可随意更换
3.抽象和接口都能完成某个功能,优先选择接口
因为接口可以多实现,多继承,并且一个类除了实现接口之外,还可以继承其他类(保留了类的继承)

*/
interface CustomerService {
	//定义一个退出系统的方法
	//抽象方法,实际上省去了public abstract
	void logout();

}

/*
编写接口的实现类
该类的编写完全是面向接口去实现的
*/
class CustomerServiceImpl implements CustomerService{
	public void logout() {
		System.out.println("成功退出系统");
	}

}

public class Test01 {
//入口
	public static void main(String[] args) {
		//要执行CustomerServiceImpl中的logout方法
		//以下程序面向接口去调用
		CustomerService cs=new CustomerServiceImpl();// 多态
		
		//调用
		cs.logout();

	}
}

运行结果为:
成功退出系统。

接口作用:
1.可以使项目分层,所有层都面向接口开发,开发效率提高
2.接口使代码与代码之间的耦合度降低,就像内存条和主板,可随意更换
在这里插入图片描述
其实好比你中午出去吃饭,你是顾客,顾客与厨师之间有没有接口?
有的,就是菜单啊
顾客不会跑到厨房跟厨师说我要吃什么东西,厨师也不会跑到大厅看你来的是谁
总之咱们餐馆有一菜单,也就是接口,这个接口的实现者是谁?就是厨师,他把这个菜单进行实现,而顾客就是面向接口(菜单)去点菜,顾客与厨师不需要商量。
比如你现在要了一份小鸡炖蘑菇,几秒钟就给你端上来了,为什么啊?因为厨师早就把这道菜做好啦,而你只能根据接口点菜,那就给你上呗。
接口就是提前约定好的一套协议,一个标准,大家都去面向接口,目的在于降低顾客和厨师的关联程度,效率大大提高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值