“Java的接口及用法”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
接口的实现和使用
第52行: 第52行:
  
 
类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。
 
类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。
 +
 +
【实例5-10】接口实现程序设计。
 +
 +
打印机接口:
 +
<nowiki>public interface Printer {  //打印机接口
 +
    public void print(String content);
 +
}</nowiki>
 +
 +
黑白打印机类:(实现了打印机的接口)
 +
 +
<nowiki>public class BlackPrinter implements Printer {
 +
    public void print(String content) {
 +
        System.out.println("黑白打印:");
 +
        System.out.println(content);
 +
    }
 +
}</nowiki>
 +
 +
主类MainClass:
 +
<nowiki>import entity.*;
 +
/*本类对应实训: */
 +
public class MainClass {
 +
  public static void main(String[] args) {
 +
BlackPrinter bp = new BlackPrinter();
 +
  //Printer cp = new ColorPrinter();
 +
  bp.print("    创业计划书");
 +
     
 +
  }
 +
}</nowiki>
 +
==接口回调技术==
 +
多态是面向对象编程思想的重要体现,它是建立在继承关系存在基础上的。接口与它的实现类之间存在实现关系,同时也就具有继承关系。因此接口可以像父类子类一样使用多态技术,其中'''接口回调就是多态技术的体现'''。接口回调是指:可以将接口实现类的对象赋给该接口声明的接口变量中,那么该接口变量就可以调用接口实现类对象中的方法。不同的类在使用同一接口时,可能具有不同的功能体现,即接口实现类的方法体不必相同,因此,接口回调可能产生不同的行为。
  
 
【实例5-10】接口实现程序设计。
 
【实例5-10】接口实现程序设计。
第95行: 第125行:
 
  }
 
  }
 
}</nowiki>
 
}</nowiki>
 
+
==一个类同时实现多个接口==
 
+
例:一体机类同时实现了打印机和复印件两个接口。
【实例5-11】同时实现多个接口。
 
  
 
打印机接口:
 
打印机接口:
第147行: 第176行:
 
接口的使用与类的使用有些不同。类会直接使用new关键字来构建一个类的实例进行应用,而接口只能被它的实现类进行进一步的实现才能发挥作用。
 
接口的使用与类的使用有些不同。类会直接使用new关键字来构建一个类的实例进行应用,而接口只能被它的实现类进行进一步的实现才能发挥作用。
  
== 接口回调 ==
 
 
多态是面向对象编程思想的重要体现,它是建立在继承关系存在基础上的。接口与它的实现类之间存在实现关系,同时也就具有继承关系。因此接口可以像父类子类一样使用多态技术,其中接口回调就是多态技术的体现。接口回调是指:可以将接口实现类的对象赋给该接口声明的接口变量中,那么该接口变量就可以调用接口实现类对象中的方法。不同的类在使用同一接口时,可能具有不同的功能体现,即接口实现类的方法体不必相同,因此,接口回调可能产生不同的行为。
 
 
【实例5-11】接口回调的例子。
 
 
 
打印机接口:
 
<nowiki>public interface PrinterFace {  //打印机接口
 
    public void print(String content);
 
}
 
黑白打印机类:(实现了打印机的接口)
 
 
<nowiki>public class BlackPrinter implements PrinterFace {
 
    public void print(String content) {
 
        System.out.println("黑白打印:");
 
        System.out.println(content);
 
    }
 
}
 
彩色打印机类:(实现了打印机的接口)
 
public class ColorPrinter implements PrinterFace{
 
    public void print(String content) {
 
    System.out.println("彩色打印:");
 
    System.out.println(content);
 
  }
 
}</nowiki>
 
 
主类MainClass:
 
<nowiki>package main;
 
import entity.*;
 
 
public class MainClass {
 
  public static void main(String[] args) {
 
                  PrinterFace bf;// 声明接口变量。
 
                  bf= new BlackPrinter();// 实现类对象赋值接口变量
 
  bf.print("    创业计划书");
 
 
 
  bf = new ColorPrinter();
 
          bf.print("    创业计划书");
 
     
 
     
 
  }
 
}</nowiki>
 
  
  
  
 
返回 [[Java程序设计]]
 
返回 [[Java程序设计]]

2018年4月22日 (日) 01:36的版本

接口的概念

Java5-101.jpg

接口这个概念,生活中就已存在,比如:

  • 笔记本的一侧提供了各种各样的接口,比如VGA接口、音频接口、网线接口等。我们不需知道笔记本内部的实现细节,就可以通过接口连接笔记本,实现相应功能。
  • 学生餐厅的各个窗口实际上上就是餐厅对外的一个个“接口”,我们不需要知道餐厅里做饭的细节,只需要通过餐厅一个个的窗口,就可以买饭、打饭。

接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法。在计算机中:

  • 人类与电脑等信息机器或人类与程序之间的接口称为用户界面。
  • 电脑等信息机器硬件组件间的接口叫硬件接口。
  • 电脑等信息机器软件组件间的接口叫软件接口,等等。

在计算机中,接口是计算机系统中两个独立的部件进行信息交换的共享边界。这种交换可以发生在计算机软、硬件,外部设备或进行操作的人之间,也可以是它们的结合。Java 程序设计中的接口(Interface)也是一种规范,是用来组织应用程序中的类,并调节它们的相互关系。接口是由常量和抽象方法组成的特殊类,是对抽象类的进一步抽象,形成了一个属性和行为的介绍集合,该集合通常代表了一组功能的实现。


Java 不支持多继承性,即一个类只能有一个父类。单继承性使得Java简单,易于管理程序。为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口。

为什么使用接口

图书的业务处理需要对图书进行增加、删除、修改、查询等处理。因为图书信息可以保存在内存中、文件中、数据库中,所以这些增删查改的底层操作方法可能会发生变化。为了保持上层业务的稳定性,避免因信息保存方式变化而修改上层业务代码,所以在我们的项目中通过接口描述图书增删查改处理,通过接口调用保持业务代码的稳定。

接口的定义

接口是由常量和抽象方法组成的特殊类

接口的格式如下:

[public]  interface  接口名 [extends 接口1,接口2…] {

   [public]  [static]  [final] 数据类型 常量名=常量值;

   [public]  [static]  [abstract] 返回值 抽象方法名(参数列表);

}

由接口的声明的语法格式看出,接口是由常量和抽象方法组成的特殊类

注解:

  • 接口的访问修饰符只有public一个。
  • 接口可以被继承,它将继承父接口中的所有方法和常量。
  • 接口体只包含两部分,一是常量;二是抽象方法。
  • 接口中的常量必须赋值,并且接口中的属性都被默认为是final来修饰的常量。
  • 接口中的所有的方法都必须是抽象方法,抽象方法不需要使用abstract关键字声明,直接默认为是抽象的。

接口的实现和使用

既然接口里只有抽象方法,它只要声明而不用定义处理方式,于是自然可以联想到接口也没有办法像一般类一样,再用它来创建对象。利用接口打造新的类的过程,称之为接口的实现(implementation),同时实现了接口的类称之为接口实现类。接口实现格式如下:

class 类名称 implements 接口A,接口B // 接口的实现
{
…
} 

当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。

类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。

【实例5-10】接口实现程序设计。

打印机接口:

public interface Printer {   //打印机接口
    public void print(String content);
}

黑白打印机类:(实现了打印机的接口)

public class BlackPrinter implements Printer {
    public void print(String content) {
    	    System.out.println("黑白打印:");
    	    System.out.println(content);
    }
}

主类MainClass:

import entity.*;
/*本类对应实训: */
public class MainClass {
	  public static void main(String[] args) {
		 BlackPrinter bp = new BlackPrinter();
		  //Printer cp = new ColorPrinter();
		  bp.print("    创业计划书");
	      
	  }
}

接口回调技术

多态是面向对象编程思想的重要体现,它是建立在继承关系存在基础上的。接口与它的实现类之间存在实现关系,同时也就具有继承关系。因此接口可以像父类子类一样使用多态技术,其中接口回调就是多态技术的体现。接口回调是指:可以将接口实现类的对象赋给该接口声明的接口变量中,那么该接口变量就可以调用接口实现类对象中的方法。不同的类在使用同一接口时,可能具有不同的功能体现,即接口实现类的方法体不必相同,因此,接口回调可能产生不同的行为。

【实例5-10】接口实现程序设计。

打印机接口:

public interface Printer {   //打印机接口
    public void print(String content);
}

黑白打印机类:(实现了打印机的接口)

public class BlackPrinter implements Printer {
    public void print(String content) {
    	    System.out.println("黑白打印:");
    	    System.out.println(content);
    }
}

彩色打印机类:(实现了打印机的接口)

public class ColorPrinter implements Printer{
    public void print(String content) {
	    System.out.println("彩色打印:");
	    System.out.println(content);
   }
}

主类MainClass:

import entity.*;
/*本类对应实训: */
public class MainClass {
	  public static void main(String[] args) {
		  Printer cp = new BlackPrinter();
		  //Printer cp = new ColorPrinter();
		  cp.print("    创业计划书");
		  
		 
		  AllPrinter ap = new  AllPrinter();
		  ap.print("    创业计划书");
          ap.copy("    创业计划书");   
          
		 
	      
	  }
}

一个类同时实现多个接口

例:一体机类同时实现了打印机和复印件两个接口。

打印机接口:

public interface Printer {   //打印机接口
    public void print(String content);
}

复印机接口:

public interface Copier {   //打印机接口
    public void copy(String content);
}

综合型一体机:(综合实现了打印机和复印件的接口)

public class AllPrinter implements Printer,Copier {
    public void print(String content) {
    	    System.out.println("多功能一体机开始打印:");
    	    System.out.println(content);
    }
    public void copy(String content) {
    	    System.out.println("多功能一体机开始复印:");
    	    System.out.println(content);
    }
}


主类MainClass:

package main;
import entity.*;
/*本类对应实训: */
public class MainClass {
	  public static void main(String[] args) {
		  Printer cp = new BlackPrinter();
		  //Printer cp = new ColorPrinter();
		  cp.print("    创业计划书");
		  
		 
		  AllPrinter ap = new  AllPrinter();
		  ap.print("    创业计划书");
          ap.copy("    创业计划书");   
          
		 
	      
	  }
}


接口的使用与类的使用有些不同。类会直接使用new关键字来构建一个类的实例进行应用,而接口只能被它的实现类进行进一步的实现才能发挥作用。



返回 Java程序设计