java基础教程:面向对象之接口(17)


上节我们学习了抽象类,了解他作为类模板的优势。这节我们继续学习抽象的另一种体现:接口。


这节课的内容是:

1、接口的概念

2、接口语法

3、接口的使用


第一部分:接口的概念

定义:

接口是对象行为的抽象,不属于类。


这句话怎么理解呢?我们拿个例子来说。

之前我们学习对象的时候,说的是类代表一组对象。比如人这个类可以代表所有人。

当需要得到某一个人张三的时候,只需要实例化人这个类,赋给张三的属性就可以了。

Person zhangsan = new Person(); zhangsan.setName("张三");

但是,接口呢,只关注对象的行为,不关心是不是同一组对象。例如,人有吃的行为,动物也有。

那么,接口就可以定义这个吃的行为,当你需要关注这个行为的时候,不用关心具体的对象是谁,

直接使用接口操作这个行为就行了。


我们再举个例子加深理解。

你女朋友(假设你有)要求情人节送花,那么,作为程序猿的你去网上仔细研究了附近的花店,最后选中一家花店,

定了99朵玫瑰,然后要求他们在情人节当天送到你家楼下。那么,就这件事来说,存在着接口的思想。我们来分析下。

1、首先,你女朋友需要你送花,但是她并不关心花从哪里来,花贵不贵。这个时候她的需求只是送花这个行为。

我们首先从女朋友的角色来看,第一次,假设男朋友存在价值。那么,类为

	class GirlFriendNormal{
		
		private BoyFriend bf;
		
		void needFlowers(){
			bf.offerFlowers();
		}
	}
	
	class BoyFriend{
		
		void offerFlowers(){
			
		};
	}


但是,其实她只是想要花,如果你不送,男朋友也可以被送花这个行为所代替(别人也可以送,让你绿油油)。。。如下

	class GirlFriendNeedFlowers{
		
		OfferFlowers offer;
		void needFlowers(){
			offer.offerFlowers();
		}
	}
	
	interface OfferFlowers{
		void offerFlowers();
	}

2、你选定了花店的花,要求他们送到你家楼下。这个时候你只关心他们的送花的行为,并不关系送花的人。

嘿嘿,是不是有种女朋友视角~~。。花店给你指派不同帅哥送过去,你关心的是花能不能送达,并不是送花的人。是不是。

这个时候花店也可以被抽象为一种行为--送花。

	class You{
		
		OfferFlowers offer;
		void needFlowers(){
			offer.offerFlowers();
		}
	}


第二部分:语法

了解了接口的目的和基本内容后,我们给接口做语法的总结。

接口是和类同一级别的,但不是类,它只关注行为本身,而并不关心是那个对象的这种行为。


接口的定义:

interface interfaceName{}

使用interface关键字定义接口。


定义完接口后,接口当中的变量和方法都有哪些规则呢?

接口中只能定义静态常量,抽象方法。(jdk1.8之前)

接口中的属性的默认是public static final 、方法是public abstract。

	interface TestInterface{
		
		public static final int i = 0;
		
		public abstract void test();
		
	}

等同于

	interface TestInterface{
		
		int i = 0;
		
		void test();
		
	}

注意:jdk1.8为接口增加两个新功能:默认方法和静态方法

静态方法不用多说,默认方法的定义格式为:

interface defaultInterface  
	{  
	    Integer getId();  
	  
	  
	    default String getName()  
	    {  
	        return "默认方法里面的输出。。。";  
	    }  
	}


其实之前学完类的属性和抽象类的抽象方法,现在就非常容易理解了。



第三部分:使用

在讲述使用之前,我们先来总结下接口的特点:

1、一个类是可以实现多个接口的

2、接口只有抽象方法,但不使用abstract修饰

3、接口可以继承接口,但只能继承一个接口。不能继承类。

4、接口的成员变量是static final的

5、接口方法在jdk1.6之后默认为public,不需要手动添加。

6、接口在jdk1.8之后增加了默认方法和静态方法

7、接口不能实例化,必须通过类实现它



使用

其实接口的使用之前已经讲述过了。就是编程时我只需要一个方法,为我提供数据。

也就是我需要一个行为,让别的对象执行这个行为。但是呢,我不关心是那个对象执行的。

具体的对象是根据参数或运行时动态决定的。

例如我们做交易系统,我们下单系统并不关心那个用户下单,只是关注用户下单 的动作。根据下单行为动态的判断当时的用户和商家就可以了。

总之,记住一句话,我只需要一个行为,不关系对象的时候,就是使用接口的时候。

大家慢慢练习,慢慢体会。


接口的部分就到这了。

何时需要定义接口?

如何定义一个接口?

接口当中都有哪些规约?



你学会了么?




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值