萌新学习java接口的日常和一些感想

接口的定义

接口(软件类接口) 是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员。—— [ 百度百科 ]

关于接口

这里依然要放百度百科。其实这篇文章主要是通过解读百度百科里面Java接口和Java抽象类的区别,让我,和你一起加深对Java接口的理解,好吧就是我突然有点脑洞,所以写了篇日记类的博客,如有偏差,欢迎指正。

1、Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用。如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点。
2、一个抽象类的实现只能由这个抽象类的子类给出,也就是说,这个实现处在抽象类所定义出的继承的等级结构中,而由于Java语言的单继承性,所以抽象类作为类型定义工具的效能大打折扣。在这一点上,Java接口的优势就出来了,任何一个实现了一个Java接口所规定的方法的类都可以具有这个接口的类型,而一个类可以实现任意多个Java接口,从而这个类就有了多种类型。
3、从第2点不难看出,Java接口是定义混合类型的理想工具,混合类表明一个类不仅仅具有某个主类型的行为,而且具有其他的次要行为。

关于上述问题的解读

接口和一般的类的区别大部分人都能区分开,所以这里只提Java接口和Java抽象类的区别。

第一条

Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用。如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点。

通过这一条我们可以知道Java的接口是接口,在此感叹一下中华文化的博大精深,其实这个说法很形象。就像是我们平常生活中碰到的插头和插座,这是一个供电的接口,且不管那是实现什么功能用的,打个比方。
插座有两个洞洞的,也有三个洞洞的,虽然三个洞洞的那个有一个是地线,我们这里不管它,但是我们知道,插头要完美地插入插座中,是需要三个洞洞插入三个洞洞的插座的。由此可以记住:一个实现了该接口的类需要实现接口中的所有方法。

第二条

一个抽象类的实现只能由这个抽象类的子类给出,也就是说,这个实现处在抽象类所定义出的继承的等级结构中,而由于Java语言的单继承性,所以抽象类作为类型定义工具的效能大打折扣。在这一点上,Java接口的优势就出来了,任何一个实现了一个Java接口所规定的方法的类都可以具有这个接口的类型,而一个类可以实现任意多个Java接口,从而这个类就有了多种类型。

但是第一条的比喻可不能用在一个类可以实现多个接口,而最多只能继承一个类上。因为在我心里接口就是插座呀。有人可能会问,为什么不把接口比作插头呢,这样就完美解决了呀!
可是你看,我觉得插座是一个很棒的比喻,接口只是提供了一个口,让你需要实现这个方法,而另一方面,插头将写好了的方法填充进接口里的方法。
当然这只是个人想法,如果你愿意你也可以把插座当成是类。

总结

没啥好说的,个人见解,未完待续。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值