Java初学——面向对象接口的应用

1、接口

  1.什么是接口

    接口是比抽象类更抽象的定义,接口不能够被实例化 实现类必须实现接口的全部方法 实现类能够实现多个接口 、多个接口使用逗号隔开 接口中的变量都是静态常量(public static final) 程序设计时面向接口的约定而不考虑具体实现 。编程

  2.为何使用接口

    有些事物具备相同的功能,多个类能够作相同的功能,程序设计中,要作到将功能模块化,细分化,这样有利于代码的改写,减小代码冗余度,接口和继承相似,可是继承具备单根性,因此有了接口这个定义。ide

  3.怎么使用接口

    接口中的成员变量 默认都是public static final的,必须显式初始化 接口中的方法 默认都是public abstract的 ,接口没有构造方法,不能被实例化 一个接口不能实现另外一个接口,但能够继承多个其余接口 一个类必须实现接口抽象方法,除非这个类也是抽象类模块化

  4.接口与抽象类的区别

    相同点 表明系统的抽象层 都不能被实例化 都能包含抽象方法 用于描述系统提供的服务,没必要提供具体实现测试

    不一样点 在抽象类中能够为部分方法提供默认实现,而接口中只能包含抽象方法 抽象类便于复用,接口便于代码维护 一个类只能继承一个直接的父类,但能够实现多个接口this

2、利用接口完成问题

    问题:墨盒和纸张的规格是一种约定 打印机须要遵照这些约定 用面向接口编程的方式开发 制定墨盒、纸张的约定或标准 其余厂商按照墨盒、纸张的标准生产墨盒、纸张 打印机厂商使用墨盒、纸张的标准开发打印机spa

    分析:墨盒和纸张规格是个接口,须要建立类去分别实现纸张和墨盒的接口,建立打印机类去组装墨盒和纸张打印,最后建立测试类设计

    1.建立纸张接口code

    

//纸张的接口
public interface Paper { String newline="\n";//纸张都会有换行符因此定义在接口里 //写入字符的功能
   void putChar(char word); //读取纸张上内容的功能
 String getContent(); }

  2.建立墨盒的接口对象

//建立墨盒接口
public interface Ink { //返回指定颜色
    String getColor(int r,int g,int b); }

  3.实现墨盒接口blog

public class ColorInk implements Ink{ @Override public String getColor(int r, int g, int b) { Color color=new Color(r,g,b);//建立color对象
        return "#"+Integer.toHexString(color.getRGB()).substring(2); } }

  4.实现纸张接口

//纸张实现类
public class TextPaper implements Paper{ int linewords=16;//定义一行有16个字符
    int rows=5;//同样有五行
    int x=0; int y=0; int paper=1; String content=""; @Override public void putChar(char word) { content+=word; x++;//移动字符的位置
        if(x==linewords){ content+=newline; x=0; y++; } if(y==rows){ content+="=======第"+paper+"页======="; paper++; y=0; content+=newline+newline; } } @Override public String getContent() { //获取内容的阶段
        if(!(x==0&&y==0)){ //页中是否存在空行 lines-y=空行 \n
            int count=rows-y; for(int i=0;i<count;i++){ content+=newline; } content+="=======第"+paper+"页======="; } return content; } }

5.组装墨盒

//打印机类组装墨盒和纸张
public class Printer { private Ink ink; //墨盒
    private Paper paper; //纸张

    public void print(String content){ System.out.println("该打印机使用的颜色是:"+ink.getColor(50, 50, 50)); for (int i = 0; i < content.length(); i++) { char c=content.charAt(i); paper.putChar(c); } System.out.println(paper.getContent()); } public Ink getInk() { return ink; } public void setInk(Ink ink) { this.ink = ink; } public Paper getPaper() { return paper; } public void setPaper(Paper paper) { this.paper = paper; } }

6.建立测试类

public class Test { public static void main(String[] args) { //准备墨盒和纸张
       Ink ink=new BlackInk(); Paper paper=new TextPaper(); Printer printer=new Printer(); printer.setInk(ink); printer.setPaper(paper); printer.print("2222222222222222222222222222222222222222222222222222222");//输入的文本 } }
相关文章
相关标签/搜索