接口泛指别人调用的方法或者是函数。我们是通过Interface来定义接口的,我们也可以将接口看做成一个抽象的类,只不过他没有构造方法,同时它里面只有静态的属性和抽象的方法。这样的话接口的实现就有几点注意的事项了:
1、接口的实现使用的是implements关键字来实现的。
2、接口的实现我们要实现接口里面的所有的抽象类当时如果实现接口的类是一个抽象的类的话就可以不实现接口里面的抽象方法。
3、因为接口没有构造方法所以接口不可以实例化。
众所周知java不像c++那样能有多继承,java要实现多继承的话就要通过接口来实现,接口是可以多继承的。接口其实就是一种约定,所以实现接口的类可以有很多。我们有一个例子来细说接口与实现:
我们定义一个书信的接口
public interface ILetter {
/***
* 书信的标题
* @param str1 书信的标题
*/
void title(String str1);
/**
* 书信的问候语
* @param str2 书信的问候语
*/
void sallHello(String str2);
/**
* 书信的内容
* @param str3 书信的内容
*/
void body(String str3);
/***
* 书信的结尾
* @param str4 书信的结尾
*/
void over(String str4);
/***
* 写信人的姓名
* @param str5 写信人的姓名
*/
void name(String str5);
/***
* 写信的日期
* @param str6 写信的日期
*/
void date(String str6);
}
我们定义的这个接口将日常生活中写信的格式,这样我们只要向里面添加文字就可以了。现在我们顶一个类来实现接口:
public class Letter implements ILetter {
@Override
public void title(String str1) {
System.out.println(str1);
}
@Override
public void sallHello(String str2) {
System.out.println(" "+str2);
}
@Override
public void body(String str3) {
System.out.println("\n "+str3);
}
@Override
public void over(String str4) {
System.out.println("\n "+str4);
}
@Override
public void name(String str5) {
System.out.println(" "+str5);
}
@Override
public void date(String str6) {
System.out.println(" "+str6);
}
}
实现接口的这个类里面我们重写了书信接口里面的所有抽象的方法,我们一个类也可以实现多个接口,每个接口名之间我们用逗号隔开就可以了。最后一步就是写一个测试类来测试我们写的接口是否有问题了。
public class LetterText {
public static void main(String[] args) {
Letter letter = new Letter();
String str1 = "尊敬的爸爸、妈妈:";
String str2 = "你们好吗?";
String str3 = "我在这里挺好的。\n 我会努力学的。\n 您二老保重身体!";
String str4 = "此致\n敬礼";
String str5 = "周杰";
String str6 = "2010年6月1日";
letter.title(str1);
letter.sallHello(str2);
letter.body(str3);
letter.over(str4);
letter.name(str5);
letter.date(str6);
}
}
我们会发现这和我们多态没有什么多大区别啊!那为什么我们要定义接口?定义接口我们可以更好的管理我们定义的多态。大量的节省代码,同时大量的节省了我们火气维护和更新代码的时间。所以面向接口的编程可以给我们带来无限的好处。