黑马程序员技术交流社区

标题: 【黑马程序员济南】小鲁哥哥白话笔记-接口 [打印本页]

作者: 小鲁哥哥    时间: 2017-8-16 16:29
标题: 【黑马程序员济南】小鲁哥哥白话笔记-接口
本帖最后由 小鲁哥哥 于 2020-1-8 19:39 编辑

点击查看济南黑马校区最新开班计划

【黑马程序员济南】小鲁哥哥白话笔记-接口

大家前边学习了抽象类和抽象方法,知道了abstract这个关键字的用处,我们在了解和掌握接口之前我们先回顾一下抽象类和抽象方法。我们从字面意思就能了解到,抽象方法肯定是抽象的,那怎么去理解抽象这个概念,一个方法的最关键的是什么,就是方法(函数)里边的逻辑代码,我们把代码去掉,只保留方法名,这样我们就不知道这个方法具体是做什么的了,这也就是抽象方法的来源。如果一个类中有抽象方法,那这个类必须为抽象类。下面举个栗子:
[Java] 纯文本查看 复制代码
//如果类中有抽象方法,类也必须为抽象类,在类的前边添加abstract关键字
abstract class Instrument{
private int i; //定义一个变量
public abstract void play(int n);//这是一个抽象方法,
public String what(){
return "Instrument";
}
public abstract void adjust();//这是一个抽象方法
}

       我们复习了抽象类和抽象接口,下面我们来了解接口。其实接口我们可以把它理解为更深层次的抽象类,因为抽象类还有具体的实现方法(函数),但是接口中的方法(函数)都是抽象的,没有具体的实现代码块(jdk1.8版本添加了接口可以添加非抽象方法,我就不做延伸了,我们可以把接口中都是抽象函数这个定义适用于jdk1.7及以下版本)。
接口:Interface这个关键字产生了一个完全抽象的类,它根本没有提供任何具体方式,它允许创建者确定方法名,参数列表和返回类型,但是没有任何方法体。也就是说接口只提供了形式,而为提供任何具体的实现。
那我们如何创建一个接口呢,我们就要用到Interface这个关键字了,我们需要用Interface关键字来代替class关键字。我们给一个例子:
[Java] 纯文本查看 复制代码
//用关键字interface代替class关键字,而且接口中不能有带方法体的方法
interface Instrument{
void play(int a);//定义一个带参数的方法
String adjust();//定义一个带返回值的方法
void eat();//一般的方法
}
大家应该看到了,我的接口里边的方法没有被声明是public还是private,因为只要是接口里边的方法,默认都是public的。
有同学不禁要问了,我们定义了一堆没有方法体的接口,有什么实际用处呢。他的主要作用是允许人们通过创建一个能够被向上转型为多种基类的类型,来实现某种类似多重继变种的特性。
而且要注意:接口是可以多实现的。
如果我们要让一个类遵循某个特定接口(或者是一组接口),我们需要使用implements关键字。
来一个栗子:
[Java] 纯文本查看 复制代码
//类实现了这个接口要实现它的所有方法
class Wid implements Instrument{

@Override
public void play(int a) {
// 实现方法体
int b = a;
}

@Override
public String adjust() {
return "哈哈,我是带返回值的方法";
}

@Override
public void eat() {
}
}
接口就给大家简单的介绍到这里,如果有不懂的问题随时在下方留言,小鲁哥哥每天都会看大家的反馈并及时作出解答。



作者: new一个对象    时间: 2017-8-17 08:25
顶一个,马上就要学习接口了,先来预习预习
作者: jingxian90    时间: 2017-8-17 09:05
终于领会到了面向接口学习的精髓
作者: 小东姐姐    时间: 2017-8-18 10:47
{:8_488:}感谢分享
作者: →_→←_←    时间: 2017-8-18 13:08

感谢分享
作者: rimfwfn    时间: 2017-8-19 11:09
感谢分享,小鲁哥棒棒的
作者: 抹茶起司    时间: 2017-8-19 22:16
不错哟~~~~~
作者: MosLY    时间: 2017-8-20 16:27
厉害~~~~
作者: beforeyou    时间: 2017-8-20 18:04
那么,接口与类 如何完美衔接的呢?





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2