一、java中的接口本质上是加约束的抽象类

  //抽象类

  public abstract class AExample

  {

  public abstract int add(int x,int y);

  public abstract int sub(int x,int y);

  }

  //接口

  public interface IExample

  {

  public int add(int x,int y);

  public int sub(int x,int y);

  }

  通常的用法是创建一个新类,这个类实现接口或从抽象类派生。这个新类要实现接口中定义的全部方法,或实现抽象类中的全部抽象方法。

  1、抽象类的实现方法:

  public class MyClass extends AExample

  {

  //其它成员定义:略

  //实现抽象类中的抽象方法

  public int add(int x,int y)

  {

  return x+y;

  }

  public int sub(int x,int y)

  {

  return x-y;

  }

  //其它部分:略

  }

  使用方法:

  AExample ae = new MyClass();

  int s = ae.add(4,2);

  int t = ae.sub(4,2);

  2、接口的实现方法:

  public class MyClass implements IExample

  {

  //其它成员定义:略

  //实现抽象类中的抽象方法

  public int add(int x,int y)

  {

  return x+y;

  }

  public int sub(int x,int y)

  {

  return x-y;

  }

  //其它部分:略

  }

  使用方法:

  IExample ae = new MyClass();

  int s = ae.add(4,2);

  int t = ae.sub(4,2);

  可见,两者本质是一样的,使用方法也是非常相似的。

  二、特殊实现方法

  这里不使用上述从抽象类的派生新类和用接口实现的新类的方法。

  1、先来看一下数组的初始化例子:

  int[] array;

  这样定义数组后,array仅仅是个引用,array[0],array[1]没有实现,即不存在。但是如果在定义时初始化为:

  int[] array = new int[]{1,2};

  1和2看成是数组的两个“成员实例”。这时array[0],array[1]就被实现了,也即array被实现了。

  2、接口和抽象类都可以用类似的方法实现托福答案 www.qcwy123.com

  AExample ae = new AExample(){

  public int add(int x,int y)

  {

  return x+y;

  }

  public int sub(int x,int y)

  {

  return x-y;

  }

  };

  int s = ae.add(4,2);

  int t = ae.sub(4,2);

  这里的所谓“成员实例”就是具体的两个方法add和sub的实现。

  又

  IExample ae = new IExample(){

  public int add(int x,int y)

  {

  return x+y;

  }

  public int sub(int x,int y)

  {

  return x-y;

  }

  };

  int s = ae.add(4,2);

  int t = ae.sub(4,2);

  很神奇吧!

  三、总结

  实际上这种方法在一般情况下用得比较少,主要应用于事件处理问题当中。并且主要使用接口。

  上面的形式是本人在学习java的事件处理编程时遇到一个疑问:为什么java的事件监听者注册时使用的形式是这样的:

  //Person是本人设计的一个含有事件处理的类,PersonListener是个接口--监听者接口托福答案 www.tfjy386.com

  Person p = new Person("Tong",53);

  /////////////////////////////////////////////////////////////////////////////////////////////////////////

  //创建事件监听者接口的实例并注册

  p.addPersonListener( new PersonListener(){

  public void OnNameChanged(PersonEventObject e)

  {

  //自定义事件处理代码

  System.out.println("Name :"+((Person)(e.getSource())).getName());

  }

  public void OnAgeChanged(PersonEventObject e)

  {

  //自定义事件处理代码

  System.out.println("Name :"+((Person)(e.getSource())).getName());

  }

  });

  //////////////////////////////////////////////////////////////////////////////////////////////////

  将上述p.addPersonListener(...)分成两个步骤就一清二楚了:

  PersonListener pl = new PersonListener(){

  public void OnNameChanged(PersonEventObject e)

  {

  //自定义事件处理代码

  System.out.println("Name :"+((Person)(e.getSource())).getName());

  }

  public void OnAgeChanged(PersonEventObject e)

  {

  //自定义事件处理代码

  System.out.println("Name :"+((Person)(e.getSource())).getName());

  }

  };

  p.addPersonListener(pl);

  看一看,就是我们上面讨论的问题。

  通过这个例子,希望许多初学java的人会有所得。

Java接口和抽象类的实现方法的更多相关文章

  1. java 接口和抽象类的区别

    java 接口和抽象类的区别抽象类:1.含有抽象方法的类一定为抽象类,反过来抽象类,不一定含有抽象方法:2.抽象类必须用abstract来进行定义,抽象方法也必须用abstract来进行定义:3.抽象 ...

  2. java接口和抽象类

    关于接口 1.创建一个接口,需要使用interface关键字. 2.实现一个接口,需要使用implements关键字. 3.接口的成员属性都是静态常量(默认public static final). ...

  3. 初探设计:Java接口和抽象类何时用?怎么用?

    今天犯了个错: “接口变动,伤筋动骨,除非你确定只有你一个人在用”.哪怕只是throw了一个新的Exception.哈哈,这是我犯的错误. 一.接口和抽象类 类,即一个对象. 先抽象类,就是抽象出类的 ...

  4. Java 接口和抽象类差别

    原文:http://blog.csdn.net/sunboard/article/details/3831823 1.概述 一个软件设计的好坏,我想非常大程度上取决于它的总体架构,而这个总体架构事实上 ...

  5. Java 接口和抽象类区别(写的很好,转了)

    原文:http://blog.csdn.net/sunboard/article/details/3831823 1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是 ...

  6. Java 接口和抽象类--缺省模式

    一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体 ...

  7. java 接口和抽象类的一个最大的区别

    写在前面,下面是在百度百科上看到的,之前就看过,这次再看感觉有更深的体会,真的是这样,每一个脚印都会留下痕迹 java接口和java抽象类有太多相似的地方,又有太多特别的地方,这里说下两者之间的一个最 ...

  8. Java接口和抽象类有什么区别,哪些时候用接口,哪些时候用抽象类?

    Java接口和抽象类有什么区别,哪些时候用接口,哪些时候用抽象类? 2013-01-05 17:16:09|  分类: JAVA |  标签:java  |举报|字号 订阅     下面比较一下两者的 ...

  9. Java接口和抽象类的区别

    今天看到项目中,写了一个抽象类,里面有很多方法继承了这类,当调用这个接口时,采用的是这个抽象类去调方法的,当时一想,这个不就是我们说的Java的多态的特征: 继承:存在继承关系的子类和父类 重写:子类 ...

随机推荐

  1. COJN 0484 800502电池的寿命

    800502电池的寿命 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 小S新买了一个掌上游戏机,这个游戏机由两节5号电池供电. ...

  2. BZOJ2324: [ZJOI2011]营救皮卡丘

    2324: [ZJOI2011]营救皮卡丘 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1359  Solved: 522[Submit][Stat ...

  3. php 环境搭建注意事项

    安装php 环境,最后安装集成环境,因为 apache+php 互联不是很容易. 这里主要是两个工具集成工具(wamp ,AppServ),其实这两个集成环境都包括(apache+mysql+php) ...

  4. RMQ——忠诚题解

    题目:忠诚 描述: [题目描述] 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满 意.但是由于一些人的 ...

  5. Java web App 部署静态文件

    以 Tomcat 为例子,静态文件,如 html, css, js ,无需编译,所以只需要把文件复制到 Tomcat/webapps 目录下面某个子目录,便可以了. 例子: 1. 在 Tomcat/w ...

  6. <一>初探js特效魅力之选项卡05

    初探js特效魅力05 接下来为大家介绍的选项卡的切换 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&quo ...

  7. linux是一种修行

    或许我当初开始学习linux是因为我在了解嵌入式的时候,查到的资料,说linux是最好的系统,那时可能自己太嫩了,自己就信了,直到最近这几天我才被ubuntu折腾的要死,就是一个环境变量,我折腾怀了我 ...

  8. Sql排名和分组排名

    在很多时候,都有排名这个功能,比如排行榜,并且还需要分页的功能,一般可以再select的时候按照某一字段 oorder by XX desc,这样limit 查找就可以得到排名信息,但是有时候是需要多 ...

  9. Android 监控网络状态

    public static boolean isNetworkAvailable(Context context) { ConnectivityManager connectivity = (Conn ...

  10. PHP安全编程:register_globals的安全性 全局变量注册(转)

    如果你还能记起早期Web应用开发中使用C开发CGI程序的话,一定会对繁琐的表单处理深有体会.当PHP的register_globals配置选项打开时,复杂的原始表单处理不复存在,公用变量会自动建立.它 ...