zoukankan      html  css  js  c++  java
  • 接口

    接口是一种引用数据类型,用interface声明 语法:

    public interface  name{
    }

    接口的特性

    (1)接口中可以声明属性和方法(实际应用比较少,不多说)

             属性都是final和static类型的;

             方法都是公共的抽象方法

    (2)接口不能有构造方法,不能用于创造对象

    (3)接口可以多继承,一个借口可以继承多个其他接口

         

    (4)一个类可以实现一个或多个接口的所有抽象方法,那么这个类也可以称为接口的实现类

             一个类继承一个父类,实现多个接口,继承在前,接口在后(特殊情况:如果这个父类里面定义了和接口里一样的抽象方法,那么最后实现的是父类里的抽象方法)

    接口的应用

    (1)接口表示一种能力,接口让实现类实现这些能力,同时实现类自己也得到拓展

    package cn.sxt.interface03;
    // 驾驶接口
    public interface DriveInterface {
    // 驾驶的方法 public void drive(); }
    package cn.sxt.interface03;
    //学生实现了上面接口的抽象方法(驾驶)
    public class Student implements DriveInterface{
        ////
        public void learn(String cName) {
            System.out.println(this.name+"正在学习"+cName);
        }
        @Override
        public void drive() {
            System.out.println(this.name+"正在驾驶...");
        }
    
    }
    package cn.sxt.interface03;
    //教师实现了接口的抽象方法(驾驶)
    public class Teacher implements DriveInterface{
        /// …
        @Override
        public void drive() {
            System.out.println(this.name+"正在学习驾驶技术...");
            System.out.println(this.name+"很快学会了飙车...");
        }
        
    }

    (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();
        }
    }

    区别:

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

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

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

    实现类对象具备接口中定义的能力 是一种has a 关系

    子类对象是一种父类类型 是一种is a 关系

    (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); } }

    抽象类和接口的异同:

    • 抽象类和接口都是引用数据类型,他们都不能创建对象。
    • 他们都可以定义抽象方法,都可以实现多态。但是抽象类可以定义非抽象方法,而接口中定义的都是抽象方法。
    • 抽象类和接口都具有传递性。抽象类是单根性(单继承),而接口是多继承。
    • 在概念上,都可以重写抽象方法。子类重写抽象类,实现类实现接口

    抽象类和子类解决的是模块内的问题(代码重用,重写,多态)而接口解决的是模块间的问题 => 高内聚,低耦合。接口可以用解耦模块

  • 相关阅读:
    MySQL之SELECT用法
    Linux中find常见用法示例
    date命令
    backupMysql.sh
    Shell脚本中使用function(函数)示例
    zabbix邮件告警
    Zabbix系统数据采集方法总结
    TOMCAT原理详解及请求过程
    tomcat-users.xml 配置
    zabbix_sender用法实例
  • 原文地址:https://www.cnblogs.com/zhangxiong-tianxiadiyi/p/10770760.html
Copyright © 2011-2022 走看看