JAVA多态学习4

好啦,说好的这一节要开讲接口了,嘿嘿,还是老样子,读者最好借助之前说的抽象类进行比较喔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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值