您的位置:首页 > 编程语言 > Java开发

JAVA多态学习4

2015-07-07 18:28 579 查看
好啦,说好的这一节要开讲接口了,嘿嘿,还是老样子,读者最好借助之前说的抽象类进行比较喔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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 接口 抽象类