• 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();
    
        }
  • 相关阅读:
    (转)TweenMax动画库学习(三)
    (转)TweenMax动画库学习(二)
    (转)TweenMax动画库学习(一)
    深入剖析Java中的装箱与拆箱(转)
    Spring MVC 和 Spring 总结(转)
    react native for android(ajax)
    React Native HelloWorld
    C# JMAIL发送邮件
    C# 接收邮件
    Spring Mvc Mybatis(初次学习)
  • 原文地址:https://www.cnblogs.com/szj-ang/p/7308055.html
Copyright © 2020-2023  润新知