zoukankan      html  css  js  c++  java
  • 接口

    1.接口

    接口是一种使用interface进行声明的引用数据类型。

    public interface 接口名{
    }
    

      

    接口中可以声明属性了方法,但是在接口中所定义的属性都为静态常量(static final),方法都为公共抽象方法(public abstract void 方法名()),由于在接口中默认使用公共抽象方法,也可以写成public void 方法名() 。

    public interface MyInterface {
    public static final String version = "1.0";
    	public int count = 10; // 默认是static final类型
    	public void showInfo();
    }
    

      需要注意的是,在接口中不能创建对象,因此也不存在构造方法。接口可以进行多继承,一个接口可以继承多个其他接口。

    ublic interface CInterface extends AInterface, BInterface {
    
    }//继承后CInterface接口就具备了A、B接口中定义的抽象方法。
    

      一个类只能继承一个父类,且同时可实现多个接口(该类为接口的实现类(implements class)),但必须实现接口中的所有抽象方法。先继承后实现。

    public class ImplClass3 extends AbsClass implements AInterface,BInterface{
    	public void showInfoA() {
    		// 实现内容
    	}
    	public void showInfoB() {
    		// 实现内容
    	}
    	public void showInfoC() {
    		// 实现内容
    	}
    }
    

      一个抽象父类定义了和接口的抽象方法,实现类实现的是抽象父类的抽象方法。

    2.接口实现多态

      接口实现多态: 接口类型 引用 实现类对象

      继承实现多态: 父类类型 引用 子类对象

      接口定义的方法被实现类实现,通过接口引用实现类,调用接口的方法时,执行实现类实现的方法。

    public class Test01 {
    	public static void main(String[] args) {
    		
    		// 同一引用类型
    		USBInterface usbInterface = null;
    		
    		// 实例不同
    		usbInterface = new USBFan();
    		// 对同一方法的执行结果不同
    		usbInterface.connect();
    
    		usbInterface = new USBMouse();
    		usbInterface.connect();
    		
    		usbInterface = new USBDisk();
    		usbInterface.connect();
    	}
    }
    

    3.面向接口编程

      所谓面向接口编程,程序设计时,只关心实现类具备什么能力,而不关心实现类如何实现这个能   力。面向接口编程时,面向接口的约定而不考虑接口的具体实现。

      也就是说,面向接口编程时,接口的定义方只关系实现类是否具备接口所定义的能力,而实现类如何被的该能力接口定义方一点都不关心

    public class Writer {
    
    	// 预留墨盒接口
    	private InkBoxInterface inkBoxInterface;
    
    	// 预留纸张接口
    	private PaperInterface paperInterface;
    
    	public InkBoxInterface getInkBoxInterface() {
    		return inkBoxInterface;
    	}
    
    	public void setInkBoxInterface(InkBoxInterface inkBoxInterface) {
    		this.inkBoxInterface = inkBoxInterface;
    	}
    
    	public PaperInterface getPaperInterface() {
    		return paperInterface;
    	}
    
    	public void setPaperInterface(PaperInterface paperInterface) {
    		this.paperInterface = paperInterface;
    	}
    
    	public Writer(InkBoxInterface inkBoxInterface, PaperInterface paperInterface) {
    		super();
    		this.inkBoxInterface = inkBoxInterface;
    		this.paperInterface = paperInterface;
    	}
    
    	public Writer() {
    		super();
    	}
    
    	public void print(String content) {
    		System.out.println("打印机正在使用"+this.inkBoxInterface.getColor()+"颜色打印"+this.paperInterface.getSize()+"打印"+content);
    	}
    }
    

      

  • 相关阅读:
    Python全栈day19(函数补充)
    Python全栈day18(三元运算,列表解析,生成器表达式)
    Python全栈day18(迭代器协议和for循环工作机制)
    KVM虚拟化
    Python使用函数实现把字符串转换成整数
    MySQL备份1356错误提示修复办法
    Python全栈day17(文件处理)
    CentOS添加PHP至环境变量
    CentOS7.2编译配置LNMP环境(MySQL5.7.20,PHP7.0.24)
    php查询mysql数据库 查询条件替中文字符串变量时无法查询
  • 原文地址:https://www.cnblogs.com/w312308542/p/10771785.html
Copyright © 2011-2022 走看看