Java——接口

》什么是接口

  在生活中,接口是一套规范,只要满足这个规范的设备,就可以将它们组装到一起,从而实现该设备的功能。现在以USB接口为例,来学习接口的含义。USB接口实际上是某些企业和组织等制定的一种约定或标准,规定了接口的大小、形状、各引脚信号的范围和含义、通信流程等,并按照约定或标准来设计各种设备,如 U盘、USB 风扇、USB 鼠标都以插到 USB 接口上正常工作。

  而在软件中,接口同样是一种规范和标准,它们可以约束类的行为,是一种方法特征的集合,但是没有方法的体现。从这个角度来讲,接口可以看作一种特殊的 “抽象类”,但是采用与抽象类玩全不同的语法来表示,两者的设计理念也不同的,抽象类利于代码复用,接口利于代码的扩展和维护。

接口的定义和类不同,它不在使用class关键字,而是使用 interface 关键字

public interface Student {

    String Address="宿舍";   //地址
    
    void print();   //学生自白
}

  》接口的修饰符可以是 public 或省略了 public 访问控制符,则默认采用包权限访问控制符,即只有在相同包结构下才可以访问该接口。

  》接口名应与类名采用相同的命名规则,即如果仅从语法角度看,接口名只要是合法的标识符即可;如果要遵守 Java 可读性规范,则接口名应由多个有意义的单词连缀而成,每个单词首字母大写,单词与单词之间无须任何分隔符,接口名应通常能够使用容辞。

  》一个借口可以有多个直接父接口,单接口只能继承接口,不能继承类。

  

通过反编译工具查看Student .class 文件

  

  通过上面的图我们可以看出在Java 当中会自动为接口的成员变量增加 public static final 修饰符,给方方自动增加 public abstract 修饰符。那么在接口当中存在的属性只能是静态常量属性,方法只能是抽象方法。

  

  那么接下来就使用接口实现打印机功能

》墨盒接口
public interface InkBox {

    /**
     * 得到墨盒颜色
     */
    public String getColor();
}
》纸张接口
public interface Paper {

    /**
     * 得到纸张大小
     */
    public String getSize();
}

   

》打印机类
public class Printer {

    InkBox inkBox;
    Paper paper;
    
    public void setInkBox(InkBox inkBox) {
        this.inkBox = inkBox;
    }
    
    public void setPaper(Paper paper) {
        this.paper = paper;
    }
    
    public void print(){
        System.out.println("使用"+inkBox.getColor()+"墨盒在"+paper.getSize()+"纸张上打印。");
    }
}
》墨盒实现类
public class ColorInkBox implements InkBox {

    @Override
    public String getColor() {
        return "彩色";
    }

}
public class GrayInkBox implements InkBox {

    @Override
    public String getColor() {
        
        return "黑白";
    }

}

》纸张实现类
public class A4Pager implements Paper {

    @Override
    public String getSize() {
        
        return "A4";
    }

}
public class B5Paper implements Paper {

    @Override
    public String getSize() {
        return "B5";
    }
}
》调用方法
public static void main(String[] args) {
        
        //使用彩色墨盒在A4纸上打印
        InkBox inkBox=new ColorInkBox();
        Paper paper =new A4Paper();
        Printer p=new Printer();
        p.setInkBox(inkBox);
        p.setPaper(paper);
        p.print();

    }
原文地址:https://www.cnblogs.com/szj-ang/p/7308055.html