好啦,说好的这一节要开讲接口了,嘿嘿,还是老样子,读者最好借助之前说的抽象类进行比较喔O(∩_∩)O哈哈~
什么是接口?
接口就是给出一些没有内容的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来。
接口的建立语法:interface 接口名{方法;}
语法:class 类名 implements 接口{
方法;
变量;
}
小结:接口是更加抽象的抽象的类,抽象类里的方法可以有方法体,接口里的所有方法都没有方法体。接口体现了程序设计的多态和高内聚低偶合的设计思想。
接口–注意事项
1、接口不能被实例化
2、接口中所有的方法都不能有主体。错误语法例:void aaa(){}←(注意不能有花括号)
接口可以看作更加抽象的抽象类。
3、一个类可以实现多个接口
4、接口中可以有变量[但变量不能用private和protected修饰]
a、接口中的变量,本质上都是static的而且是final类型的,不管你加 不加static修饰
b、在java开发中,我们经常把常用的变量,定义在接口中,作为全局变量使用
访问形式:接口名.变量名
5、一个接口不能继承其它的类,但是可以继承别的接口
好啦,长气了,现在我们给个例子,说一下接口的应用
package interfacekak;
//Mouth接口
//interface Mouth extends Base{ //错误,接口只能继承于接口,而不能继承与类
interface Mouth extends cell{
int a=1;//加不加static都是静态的,不能用private和protected修饰
//声明了两个方法
public void eat();//嘴巴吃
public void drink();//嘴巴喝
/*public void sing() //出错,
{
System.out.println("大家一起唱..");
};//嘴巴唱
*/
}
//编写了一个狗类,并实现了Mouth接口
//一个重要的原则:当一个类实现了一个接口,要求该类把这个接口的所有方法全部实现
class Dog implements Mouth{
public void eat(){
System.out.println("狗要吃东西..");
}
public void drink(){
System.out.println("狗要喝东西..");
}
}
//接口继承别的接口
class Base{
}
interface cell{
}
//编写了一个猫类,并实现了Mouth接口
class Cat implements Mouth{
public void eat(){
System.out.println("猫要吃东西..");
}
public void drink(){
System.out.println("猫要喝水..");
}
}
//动物类
class Animal{
//开始使用Mouth接口
public void activity(Mouth mouth){
mouth.eat();
mouth.drink();
}
}
public class Interfacekak {
public static void main(String[] args) {
// TODO 自动生成的方法存根
//Mouth.a++; //a为static,不能改值
System.out.println(Mouth.a);
//创建 animal
Animal animal=new Animal();
//创建dog
Dog dog1=new Dog();
//创建cat
Cat cat1=new Cat();
System.out.println(Dog.a); //可以类可以访问接口的变量
animal.activity(dog1);
animal.activity(cat1);
}
}
结果截图
1、实现接口可以看作是对继承的一种补充。(继承是层级式的,不太灵活。修改某个类就会打破继承的平衡,而接口就没有这样的麻烦,因为它只针对实现接口的类才起作用)
2、实现接口可在不打破继承关系的前提下,对某个类功能扩展,非常灵活。
ps:说好的和抽象类的对比呢?
大哥,能不能注意一下我这两篇,抽象类和接口所说的注意事项,比较一下就好,师傅带进门,修行靠个人啊。。。。
还不够的话,介绍一下别人大神的网址,大家去参观一下吧,小神庙小啊,逃%>_<%
《抽象类与接口的区别 》
http://blog.csdn.net/ttgjz/article/details/2960451
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/u011446963/article/details/46792829