Java程序设计中的接口应用

2016-01-29 12:55 35 1 收藏

Java程序设计中的接口应用,Java程序设计中的接口应用

【 tulaoshi.com - Java 】

  Java语言提供了一种接口(interface)机制。这种接口机制使Java的面向对象编程变得更加灵活。我们可以用接口来定义一个类的表现形式,但接口不能包含任何实现。在《Thinking in Java》一书中,作者对接口有这样的描述:“接口(interface)比抽象(abstract)的概念更进了一步。你可以把一个接口看成是一个纯的抽象类。”我认为作者对接口的这一解释再准确不过了。

  理解并用好接口机制将帮助我们更好的掌握Java这种面向对象的编程语言。下面我们来讨论一下接口的使用规则以及相关的应用。

  一、接口的定义及实现

   定义接口和定义类相似,只是要把 class关键字换为 interface。定义方法时只需要方法名,返回类型和参数列表,不能有方法体。接口中可以定义字段,这些字段都被暗指为 static 和 final,因此应该根据需要先定好这些字段的值。例如:

  public interface Flyable {
  void fly();
  }

  public interface Talkable {
  void talk();
  }

  public interface Message {
  int MAX_SIZE = 4096;
  String getMessage();
  }

  上面定义的几个接口中,Flyable 和 Talkable 只定义了一个方法,而 Message 里除了方法外还有一个字段 MAX_SIZE。可以看出这些接口只定义了类的表现形式,而不包含任何实现,所以不能直接使用。要使用这些接口就需要有相应的类去实现它们。实现接口时应该先在类名后用 implements 关键字申明将要实现的接口,如果要实现多个接口,应该用逗号将它们隔开,然后一一实现这些接口中定义的方法。如下面的例子:

  public class Parrot implements Flyable, Talkable {

  public void fly() {
  System.out.println("Flying like a parrot…");
  }

  public void talk() {
  System.out.println("Hello! I am a parrot!");
  }
  }

  public class TextMessage implements Message {
  String message;

  public void setMessage(String msg) {
  message = msg;
  if (message.length() MAX_SIZE)
  message = message.substring(0, MAX_SIZE);
  }

  public String getMessage() {
  return message;
  }
  }

  在 Parrot(鹦鹉)例子中,我们用接口 Flyable 来表示飞行能力,Talkable 表示说话能力,但它们并不包含具体实现。而 Parrot 同时具有这两种能力,所以我们为 Parrot 类同时实现了 Flyable 和 Talkable 这两个接口。同样我们还可以定义一个Swallow(燕子)类,但燕子只有飞行能力,所以我们只需要为 Swallow 实现 Flyable 就行了。因为它们各自的的飞行方法有所不同,所以它们有各自关于飞行的具体实现。

   另外,正因为一个类可以同时实现多个接口,使得Java的面向对象特性变得非常灵活。运用这种特性,我们可以实现类似C++语言中多继承那样的特性,甚至更灵活的一些特性。下面我们来讨论一下接口在实际中的应用。

  二、用接口来定义一些全局变量

   因为接口内的字段都是static和final的,所以我们可以很方便的利用这一点来创建一些常量。例如:

  public interface Constants {
  String ROOT = "/root";
  int MAX_COUNT = 200;
  int MIN_COUNT = 100;
  }

  在使用时可以直接用Constants.ROOT这样的形式来引用其中的常量。我们还可以用下面这种方法来创建初始值不确定的常量。

  public interface RandomColor {
  int red = Math.random() * 255;
  int green = Math.random() * 255;
  int blue = Math.random() * 255;
  }


  其中red、green和blue的值会在第一次被访问时建立,然后保持不变。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/java/)

   三、用接口来定义基本数据结构

   在设计一套软件系统的初期,我们可以用接口来对一些基本数据元素的特性来进行一些描述,再根据需要进行不同的实现。请大家看看下面这个例子:

  public interface User {
  int getAge();
  String getName();
  String getPassword();
  }

  public class XMLUser implements User {
  // 这里用XML技术实现User接口中的方法
  public int getAge() { ... }
  public String getName() { ... }
  public String getPassword() { ... }
  }

  public abstract class UserFactory {
  public static UserFactory getUserFactory() {
  return new XMLUserFactory();
  }

  public User getUser(String name);
  publi

来源:https://www.tulaoshi.com/n/20160129/1488111.html

延伸阅读
多线程是Java语言的一大特性,多线程就是同时存在N个执行体,按几条不同的执行线索共同工作的情况。程序,进程,线程,可以从不同的角度去理解。 !-- frame contents -- !-- /frame contents -- 程序就是一段静态的代码,可以理解成一组计算机命令的集合.进行就是这个程序一次动态的执行过程,从代码的加载到执行完毕的一个过...
一、理解多线程 多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。 线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作 系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。 多个线程的执行...
现在,Java技术已经风靡全球,就连环球信息网WWW的创始人也说:“计算机行业发展的下一个浪潮就是Java,并且很快就会发生。” SUN公司也声称,J2EE 1.4代表了“迄今为止最完美的网络服务平台”。 !-- frame contents -- !-- /frame contents -- 现在,Java程序已经无处不在,就连手机都成了Java的活动舞台。2004年的二级计...
标签: Web开发
1、通过适当的Ajax应用达到更好的用户体验; 2、把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。 Ajax这个概念的最早提出者Jesse James Garrett认为:Ajax是Asynchronous JavaScript and XML的缩写...
标签: Java JAVA基础
合成图像 您不必从文件中读取所有的图像 — 您可以创建自己的图像。要创建自己的图像,最灵活的方法是用一个 BufferedImage 对象,它是 Image 类的一个子类,它把图像数据存储在一个可以被访问的缓冲区中。它还支持各种存储像素数据的方法:使用或不使用 alpha 通道、不同种类的颜色模型以及颜色组件的各种精确度。Color...

经验教程

868

收藏

10
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部