java-接口

来源:互联网 发布:网络视频产业发展趋势 编辑:程序博客网 时间:2024/06/09 20:07

接口的作用:

  • 扩展功能
  • 可以定义约束规范
  • 程序的解耦

接口定义格式:

interface 接口名{}

接口注意事项:

  • 接口是一个特殊的类。
  • 接口的成员变量默认的修饰符为public static final。那么就是说接口的成员变量都是常量。
  • 接口中的方法都是抽象的方法,默认的修饰符为public abstract。
  • 接口不能创建对象。
  • 接口是没有构造方法的。
  • 接口是给类去实现使用的,非抽象类实现一个接口的时候,必须要把接口中所有的方法全部实现。

实现接口的格式:

class 类名 implements 接口名{}

类与接口之间的关系:

  • 实现关系

类与接口要注意的事项:

  • 非抽象类实现一个接口时,必须要把接口中所有的方法全部实现。
  • 抽线类实现一个接口时,可以实现也可以不实现接口中的方法。
  • 一个类可以实现多个接口。

接口与接口之间的关系:

  • 继承关系

接口与接口之间要注意的事项:

  • 一个接口是可以继承多个接口的。

案例:

武器接口:Weapon

public interface Weapon {    /*public static final*/     //把数字值代表的武器赋给常量,通过常量名就可以知道武器类别    int TYPE_COLD=1;    int TYPE_HEAT=2;    int TYPE_NUCLEAR=3;    /*接口的方法都是公共抽象的*/    /*public abstract*/         void kill();    //返回整数(武器的类别)    int getType();    //得到武器的名字    String getName();}   

接口实现类:
大宝剑类(Sword)实现武器(Weapon)接口

// Sword  AK47  Lybpublic class Sword implements Weapon {    public void kill() {        System.out.println("耍剑");    }    public int getType() {        //冷兵器的数字常量 冷兵器代表1        return Weapon.TYPE_COLD;    }    public String getName() {        return "倚天剑";    }}

接口实现类:
狼牙棒类(Lyb)实现武器(Weapon)接口:

public class Lyb implements Weapon{    public void kill() {        System.out.println("耍棒");    }    public int getType() {        return Weapon.TYPE_NUCLEAR;    }    public String getName() {        return "狼牙棒";    }}

接口实现类:
AK47类(AK47)实现武器(Weapon)接口:

public class AK47 implements Weapon{    public void kill() {        System.out.println("耍枪");    }    public int getType() {        return Weapon.TYPE_HEAT;    }    public String getName() {        return "AK47";    }}

变形金刚类:

public class Transformer {    //武器成员变量 w    //变形金刚使用一个武器接口,变形金刚要想使用武器接口,我们把武器接口定义成变成金刚的成员变量。    //引用类型的变量,没有进行赋值,默认为null值(空)。    private Weapon w;    /*     * 设置武器, 接收的武器参数,赋值给成员变量 w     */    public void setWeapon(Weapon w) {        //给成员变量 w 赋值        //赋的是从参数接收的武器对象        this.w = w;    }   //进攻方法    public void attack() {        //判断是否接入武器        if(w == null) {            System.out.println("用牙咬");            return;        }        String type = "";        switch(w.getType()) {        case Weapon.TYPE_COLD:            type = "冷兵器";            break;        case Weapon.TYPE_HEAT:            type = "热兵器";            break;        case Weapon.TYPE_NUCLEAR:            type = "核武器";            break;        }        System.out.println(         "使用"+type+"武器"+w.getName()+"进攻");        w.kill();    }}

测试类:Test1

public class Test1 {    public static void main(String[] args) {        /*         * 1. 新建 Sword 对象赋给 s         * 2. 新建 AK47 对象赋给 a         * 3. 新建 Lyb 对象赋给 l         * 4. 新建 Transformer 对象赋给 t         * 5. 让变形金刚 t 进攻   这时候没接武器用牙咬         * 6. 将武器 s 接入变形金刚的武器接口         *      //给w接口设置接口实现类         *      t.setWeapon(s);         * 7. 让变形金刚 t 进攻         * 9. 将武器 a 接入变形金刚的武器接口         * 10. 让变形金刚 t 进攻         * 11. 将武器 l 接入变形金刚的武器接口         * 12. 让变形金刚 t 进攻         */        Sword s = new Sword();        AK47 a = new AK47();        Lyb l = new Lyb();        Transformer t = new Transformer();        t.attack();        t.setWeapon(s);        t.attack();        t.setWeapon(a);        t.attack();        t.setWeapon(l);        t.attack();    }}
0 0
原创粉丝点击