zoukankan      html  css  js  c++  java
  • 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();
    
        }
  • 相关阅读:
    【原创】Apache ab结果参数详解
    【转载】QPS,用户平均等待时间,服务器平均请求处理时间
    【原创】Apache ab测试时出现:apr_socket_recv "connection reset by peer" 104
    【做题】Codeforces Round #429 (Div. 2) E. On the Bench——组合问题+dp
    oracle递归查询
    http1.0和1.1的区别
    here with you
    spring杂碎
    西海情歌
    //随机生成 10到20条数据 数据包含 用户名(5-10位的字母) 性别 年龄(1-100岁)
  • 原文地址:https://www.cnblogs.com/szj-ang/p/7308055.html
Copyright © 2011-2022 走看看