黑马程序员_细说接口

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------


一、接口的产生:

抽象类中可以定义抽象方法,当一个类中的方法全是抽象的,这时,可以通过另外一种特殊的形式来体现。

即接口:接口是一个特殊的抽象类(但是它不是类,因为不会继承Object类)。

接口用关键字  interface  来定义:

<span style="font-size:18px;"><span style="white-space:pre">	</span>abstract class Demo {
		abstract void show1();
		abstract void show2();
	}</span>

二、接口的定义格式:

1、定义变量,但是变量必须要有固定的修饰符修饰,public static final   所以接口中的变量也称为常量。

2、定义方法,方法的固定修饰符,public abstract。

3、接口中的成员都是公共的。

4、接口中的修饰符,如果自己没有写,编译器会自动添加。


三、接口的特点:

1、接口不可以创建对象;

2、子类必须覆盖掉接口中所有的抽象方法后,子类才可以实例化,否则子类是一个抽象类,不可以进行实例化;

3、子类必须与接口产生关系,类与接口之间的关系是实现,同过关键字  implements  来实现;

4、接口的产生解决了多继承的弊端。将多继承的这种机制在Java 中通过实现完成了。


接口的产生解决多继承弊端的代码示例:

<span style="font-size:18px;"><span style="white-space:pre">	</span>interface A {
		void show1();
	}
	interface B {
		void show2();
	}
	class C implements A,B {	// 多实现。同时实现多个接口。
		public void show1(){}
		public void show2(){}
	}</span>

接口是如何解决多继承的弊端呢?

弊端:多继承时,当多个父类有相同功能时,子类调用父类功能会产生不确定性。核心原因就是在于多继承父类中功能有主题,而导致调用运行时,uqueding运行那个主体内容。

接口中的功能没有方法体(主体),方法体由子类来确定,因此接口的多实现就解决了多继承。

<span style="font-size:18px;"><span style="white-space:pre">	</span>interface A {
<span style="white-space:pre">	</span>	void show();	//接口中的功能都没有方法体
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>interface B {
<span style="white-space:pre">	</span>	void show();	//接口中的功能都没有方法体
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>class C implements A,B {	// 多实现。同时实现多个接口。
<span style="white-space:pre">	</span>	public void show();		//方法体是由子类来明确
<span style="white-space:pre">	</span>}

<span style="white-space:pre">	</span>C c = new C();
<span style="white-space:pre">	</span>c.show();	//对象调用方法,方法体是确定的,可以调用。</span>

四、接口的应用:

子类通过继承父类扩展功能,通过继承扩展的功能都是子类应该具备的基础功能。如果子类想要继续扩展其他类中的功能,这时可以通过实现接口来完成。

<span style="font-size:18px;"><span style="white-space:pre">	</span>class Fu {
<span style="white-space:pre">	</span>	public void show(){}
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>interface Inter	{	//接口一般定义事物的扩展功能
<span style="white-space:pre">	</span>	pulbic void show1();
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>/*
<span style="white-space:pre">	</span> * 让子类继承父类实现父类功能,
<span style="white-space:pre">	</span> * 子类想要继续扩展其他类中的功能
<span style="white-space:pre">	</span> * 只需要实现接口
<span style="white-space:pre">	</span> */
<span style="white-space:pre">	</span>class Zi extends Fu implements Inter {
<span style="white-space:pre">	</span>	public void show1() {
<span style="white-space:pre">	</span>		System.out.println("重写父类方法");
<span style="white-space:pre">	</span>	}
<span style="white-space:pre">	</span>}</span>
a、接口的出现避免了单继承的局限性

b、父类中定义事物的基本功能

c、接口中定义事物的扩展功能


五、接口与接口的关系:

1、类与类之间的关系是继承

2、类与接口之间的关系是实现

3、接口与接口之间的关系是继承

<span style="font-size:18px;"><span style="white-space:pre">	</span>interface A {
<span style="white-space:pre">	</span>	void show1();
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>interface AA {
<span style="white-space:pre">	</span>	void show11();
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>interface B extends A,AA {	//接口与接口之间的关系是继承,可以多继承。 
<span style="white-space:pre">	</span>	void show2();
<span style="white-space:pre">	</span>}

<span style="white-space:pre">	</span>class Test implements B {	//类与接口之间的关系是实现。
<span style="white-space:pre">	</span>	public void show1(){}
<span style="white-space:pre">	</span>	public void show2(){}
<span style="white-space:pre">	</span>	public void show11(){}
<span style="white-space:pre">	</span>}

<span style="white-space:pre">	</span>class InterfaceDemo  {
	<span style="white-space:pre">	</span>public static void main(String[] args) {
	<span style="white-space:pre">	</span>	DemoImpl d = new DemoImpl();
	<span style="white-space:pre">	</span>	d.show1();
	<span style="white-space:pre">	</span>	d.show2();
	<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>}</span>


六、接口的思想:

1,、接口的出现对功能是实现了扩展

2、接口的出现定义了规则

3、接口的出现降低了耦合性(解耦 -- 让事物之间的耦合性降低)

接口的出现完成了解耦,说明有两方:一方在使用这个规则;一方在实现这个规则。

比如电脑使用USB接口这个规则,而外围设备则是在实现则个规则。



---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

详细请查看:www.itheima.com

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值