Java程序设计中的接口应用

农家乐大樱桃

农家乐大樱桃

2016-01-29 12:55

Java程序设计中的接口应用,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的值会在第一次被访问时建立,然后保持不变。

(本文来源于图老师网站,更多请访问http://m.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

展开更多 50%)
分享

猜你喜欢

Java程序设计中的接口应用

Java JAVA基础
Java程序设计中的接口应用

Java桌面应用程序设计

Java JAVA基础
Java桌面应用程序设计

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Java多线程程序设计

Java JAVA基础
Java多线程程序设计

Java Applet程序设计基础

编程语言 网络编程
Java Applet程序设计基础

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Java程序设计的基本结构

编程语言 网络编程
Java程序设计的基本结构

Java程序设计资源推荐

编程语言 网络编程
Java程序设计资源推荐

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Flash MX 2004 模拟出打字效果的制作方法

Flash MX 2004 模拟出打字效果的制作方法

XmlHttp异步获取网站数据的例子

XmlHttp异步获取网站数据的例子
下拉加载更多内容 ↓