java-接口

接口的作用:

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

接口定义格式:

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  Lyb
public 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值