1、接口不能实例化
2、接口之间可以相互继承
3、implement 接口的实现类必须重写接口中的方法
4、接口中的方法都是public abstract
5、接口中的变量都是常量,public static final
6、实现举例:
public class TestInterface {
public static void main(String[] args) {
Computer computer=new Computer();
//1、创建接口的非匿名实现类的对象
Flash flash=new Flash();
computer.transferData(flash);
System.out.println("---------------------------");
Printer printer=new Printer();
computer.transferData(printer);
computer.transferData(new Printer());
System.out.println("---------------------------");
//2、创建接口的匿名实现类的对象
USB phone=new USB() {
@Override
public void start() {
System.out.println("手机开始工作");
}
@Override
public void stop() {
System.out.println("手机停止工作");
}
};
computer.transferData(phone);
System.out.println("---------------------------");
computer.transferData(new USB() {
@Override
public void start() {
System.out.println("mp3开始工作");
}
@Override
public void stop() {
System.out.println("mp3结束工作");
}
});
}
}
class Computer{
public void transferData(USB usb){
usb.start();
System.out.println("具体传输数据");
usb.stop();
}
}
interface USB{
public static final int MAX_SPEED=7900;//public static final可不用写
int MIN_SPEED=1;
void start();
public abstract void stop(); //public abstract可不用写
}
class Flash implements USB{
@Override
public void start() {
System.out.println("U盘开始工作");
}
@Override
public void stop() {
System.out.println("U盘结束工作");
}
}
class Printer implements USB{
@Override
public void start() {
System.out.println("打印机开始工作");
}
@Override
public void stop() {
System.out.println("打印机结束工作");
}
}
7、静态代理模式
package com.ds.ds2;
public class NetWorkTest {
public static void main(String[] args) {
Server server=new Server();
ProxyServer proxyServer = new ProxyServer(server);
proxyServer.browse();
}
}
interface NetWork{
void browse();
}
//被代理类
class Server implements NetWork{
@Override
public void browse() {
System.out.println("真实的服务器访问网络");
}
}
//代理类
class ProxyServer implements NetWork{
private NetWork work;
public ProxyServer(NetWork work) {
this.work = work;
}
public void check(){
System.out.println("联网之前的检查工作");
}
@Override
public void browse() {
check();
work.browse();
}
}