接口(interface)

接口在Java中作为规范和契约存在,它定义了一组规则,确保实现接口的类遵循特定的行为标准。接口完全面向抽象,不提供任何实现,与抽象类相比更进一步约束了子类。接口的主要作用是实现规范和具体实现的分离,作为不同模块间通信的标准。在Java中,一个类可以实现多个接口,但不能同时继承多个类。接口中的成员变量默认为public static final,方法默认为public abstract。自Java 8开始,接口还可以包含默认方法和静态方法。
摘要由CSDN通过智能技术生成

接口(interface)

**接口就是规范,定义一组规则。体现了现实世界中“如果你是。。。。,就必须做到。。的思想

接口的本质是契约,就像我们的法律一样,我们必须遵守。

面向对象的精髓,是对对象的抽象。最体现这一点的就是接口。为什么我们讨论设计模式都只针对具备抽象能力的语言(如c ++,Java,c#等),就因为设计模式所研究的,实际上就是如何合理的去抽象。**

接口的作用

为什么需要接口?接口和抽象类有什么区别?

接口就是”比抽象类还抽象的抽象类“,可以更加规范的对子类进行约束。全面地专业地实现了”规范和具体实现的分离

抽象类还提供某些具体实现,而接口不提供任何实现。接口中所有方法都是抽象方法,接口完全面向规范,规定了一批具有类的公共方法规范

从接口实现者角度看,接口定义了可恶意向外并不提供的服务
从接口调用者角度看,接口定义了实现者可以提供哪些服务

接口是两个模块之间通信的标准,通信的规范。如果吧你要设计的模块之间的的接口定义好,就当与完成系统的设计大纲,剩下的就是添砖加瓦的具体实现。

接口和实现类不是父子关系,是实现规则的关系。

区别:

1》普通类:具体实现
2》抽象类:具体实现,规范(抽象方法)
3》接口:规范

定义接口的详细说明:

1、**访问修饰符:**只能是public
2、**接口名:**和类名采用相同命名机制
3、**extends:**接口可以多继承
4、**常量:**接口中属性只能使常量,总是:public static final修饰,不写也是
5、**方法:**接口中的方法只能:public abstract。省略的话,也是public abstract。

要点:

1》子类通过implements来实现接口中的规范
2》接口不能创建实例,但是可用于声明引用变量类型。
3》一个类实现类接口,就必须实现接口中所有的方法,并且这些方法必须是public的
4》JDK1.8(不含1.8)之前,接口中只能包含静态常量,抽象方法,不能有普通属性,构造方法,普通方法
5》JDK1.8(含1.8),接口中包含普通的静态方法,默认方法

/*
 * 蝙蝠侠和小丑的接口
 */
package cn.test.Interface;

public class TestInterface2 {
	public static void main(String[]args){
		Batman b = new Batman();
		Joker j = new Joker();
		b.unbelieving();
		b.different();
		b.deterrent();
		b.symbol();
		
	    j.Smile();
		j.different();
		j.deterrent();
		j.symbol();
	}

}

interface Dark{         //接口1:黑暗
	void unbelieving();   //多疑
}
interface Chaos{        //接口2:混沌
	void Smile();         //微笑
} 
interface Lunatic{      //接口3:疯子  
	void different();     // 异类
}
interface Fear{         //接口4:恐惧
	void deterrent();     //威慑
}
interface Flag{         //接口5:标志
	void symbol();        //象征
}

class Batman implements Dark,Lunatic,Fear,Flag{
	public void unbelieving(){
		System.out.println("Dark knight:");//黑暗骑士:
		System.out.println("Batman always has the cords!");
	}       //蝙蝠侠永远有底牌
	public void different(){
		System.out.println("The night kingt!");
	}       //黑夜骑士
	public void deterrent(){
		System.out.println("Fear in the skies over Gotham City!");
	}       //哥谭市上空的恐惧
	public void symbol(){
		System.out.println("Because I am Batman!");
	}       //因为我是蝙蝠侠
}

class Joker implements Chaos,Lunatic,Fear,Flag{
	public void Smile(){
		System.out.println("Mr.J:");// J先生:
		System.out.println("Can you introduce meas...Joker?");
	}       //你能介绍小丑么?
	public void different(){
		System.out.println("There is no punchline .It is not a joke.");
	}       //这里没有笑梗,这不是笑话。
	public void deterrent(){
		System.out.println("A big smile.");
	}       // 一个大大的微笑.
	public void symbol(){
		System.out.println("Why so serious?");
	}       //为什么这么严肃?
}



Dark knight:
Batman always has the cords!
The night kingt!
Fear in the skies over Gotham City!
Because I am Batman!
Mr.J:
Can you introduce meas...Joker?
There is no punchline .It is not a joke.
A big smile.
Why so serious?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值