JAVA-如何使用接口

接口定义规范 (利用方法实现这种规范)

在这里插入图片描述
用程序描述USB接口
1.USB接口本身没有实现任何接口
2.USB接口规定了数据传输的要求
3.USB接口可以被多种USB设备实现

步骤:
1.编写USB接口----根据需求写方法
2.实现USB接口----实现所有方法
3.使用USB接口----用多态的方式使用 :
USB usb=new KeyBoard(); //向上转型
USB usb=new Mouse();//向上转型

public interface USB {
    /*
    USB接口只提供服务  接口定义了标准/规范
    返回值类型  方法名定义之后不再修改  子类实现接口即可
    默认提供public abstract实现
     */
    void service();
}
public class Mouse implements USB {
   /*
     USB接口的Mouse
    */
    @Override
    public void service() {
        System.out.println("鼠标按照USB接口制定的标准,接入了USB接口,开始工作");
    }
}
public class KeyBoard implements USB {
   /*
       USB接口的键盘
    */
    @Override
    public void service() {
        System.out.println("键盘按照USB接口制定的标准,接入了USB接口,开始工作");
    }
}
public class UsbTest {
    public static void main(String[] args) {
        //使用多态的方式创建对象
        USB usb=new KeyBoard();
        usb.service();
        USB usb1=new Mouse();
        usb1.service();
    }
}

接口定义能力(利用方法实现这种能力)

面向接口编程
关心实现类有何能力 而不必关心实现类实现这种能力的细节
面向接口的约定而不考虑接口的具体实现
在这里插入图片描述

防盗门功能的实现:
防盗门是一个门 继承(is a 的关系)
门有两个抽象方法: 开门 关门;
防盗门有一个锁有以下功能 接口(has a的关系)
1.上锁
2.关锁

//接口
public interface Locker {
    //不能使用 static修饰方法 但可以使用static修饰变量
    void closeLocker();//接口的第一个能力
    void openLocker();//接口的第二个能力
}
//抽象类
public abstract class Door {
    public static final int age=18;
    //父类 不能使用static修饰  static修饰的方法可以被继承但不能被重写
    public abstract void Close();
    public abstract void Open();
}
public class NoThiefDoor extends Door implements Locker {
   /*  实现类继承父类的同时也可以实现接口
      防盗门有四个功能  开门 关门 上锁 解锁
      继承父类:可以有开门 关门的功能
      实现接口:可以有开锁 关锁的功能
    */
    @Override
    public void Close() {
       System.out.println("拉门~门关闭了");
    }

 @Override
    public void Open() {
     System.out.println("推门~门打开了");
    }

    @Override
    public void closeLocker() {
      System.out.println("关闭门 自动上锁");
    }

    @Override
    public void openLocker() {
     System.out.println("输入密码,门打开了");
    }
}
public class TestDoor {
    public static void main(String[] args) {
        NoThiefDoor noThiefDoor=new NoThiefDoor();
        noThiefDoor.Open();
        noThiefDoor.Close();
        System.out.println("主人回来了~~~");
        noThiefDoor.openLocker();
        noThiefDoor.closeLocker();
    }
}

接口和抽象类的区别:
相同点:
1.代表系统的抽象层
2.都不能被实例化
3.都能包含抽象方法 用于描述系统提供的服务,不必提供具体的实现
不同点:
1.抽象类当中可以为部分方法提供默认实现,可以有代码块,实例变量 实例方法,构造方法等,接口中只能由抽象方法 变量是静态常量(static final修饰)
2.抽象类便于代码复用性,接口便于代码维护
3.一个类只能继承一个直接的父类,但可以实现多个接口

接口的使用原则

1.接口做系统与外界交互的接口
2.接口提供服务接口本身一旦制定 就不允许随意更改
3.抽象类可完成部分功能的实现 还有部分功能可作为系统的扩展

  public interface MyInterface{
    public MyInterface(); ❌ 接口中不能有构造方法
    public void method1();
    public void method2(){};❌ 不能有方法体
    private void method3();❌  访问权限符只能是public
    void method4(); 省略了 public abstract
    int method5();
    int TYPE=5; 省略了 static final
}

练习题
在这里插入图片描述

public interface CPU {
    public static final String brand="Intel";
    public static final Double ZhuPin=3.8;
    public abstract void cpu();
}
public interface HardDisk {
  public static final int MemoryCapacity=4;
  public abstract int MemoryCapacity();
}
public interface EMS {
    public static final int HardCapacity=3000;
    public abstract int HardCapacity();
}
public class Computer implements CPU,EMS,HardDisk {
    public void print(){
        System.out.println("计算机的信息如下:");
    }
    @Override
    public void cpu() {
        System.out.println("CPU的品牌是:"+brand+","+"主频是:"+ZhuPin+"GHZ");
    }

    @Override
    public int HardCapacity() {
        System.out.println("硬盘的容量是:"+HardCapacity+"GB");
        return  HardCapacity;
    }

    @Override
    public int MemoryCapacity() {
        System.out.println("内存容量是:"+MemoryCapacity+"GB");
        return MemoryCapacity;
    }
}
public class Test {
    public static void main(String[] args) {
        Computer computer=new Computer();
        computer.print();
        computer.cpu();
        computer.HardCapacity();
        computer.MemoryCapacity();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李自桐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值