java基础之:匿名内部类应用例子一

一:接口

 1 package com.yeepay.sxf.testclassforinner;
 2
 3 /**
 4  * 回调接口.
 5  * @author shangxiaofei
 6  *
 7  */
 8 public interface CallBack {
 9
10     public boolean process(Integer a);
11
12     public boolean delete(Integer b);
13 }

二:业务类

 1 package com.yeepay.sxf.testclassforinner;
 2 /**
 3  * 业务类使用回调接口
 4  * @author shangxiaofei
 5  *
 6  */
 7 public class PayMentService {
 8
 9
10     public String payforMoney(Integer a,CallBack callBack){
11         System.out.println("PayMentService.payforMoney()"+a);
12         Integer m=a+100;
13         if(m>100){
14             boolean falg=callBack.process(m);
15             if(falg){
16                 return "callBack.process"+m;
17             }else{
18                 return "callBack.process"+m;
19             }
20
21         }else{
22             boolean flag=callBack.delete(m);
23             if(flag){
24                 return "callBack.delete"+m;
25             }else{
26                 return "callBack.delete"+m;
27             }
28         }
29     }
30 }

三:控制类

 1 package com.yeepay.sxf.testclassforinner;
 2 /**
 3  * 测试类
 4  * @author shangxiaofei
 5  *
 6  */
 7 public class TestController {
 8
 9     private PayMentService payMentService=new PayMentService();
10
11     private String dd="sxf";
12
13     public void testPay(){
14
15         String aString=payMentService.payforMoney(100, new CallBack() {
16
17             @Override
18             public boolean process(Integer a) {
19                 String mString="";
20                 if(a>100){
21                     mString="sxf";
22                 }
23                 if(mString.equals(dd)){
24                     return true;
25                 }
26                 return false;
27             }
28
29             @Override
30             public boolean delete(Integer b) {
31                 String mString="";
32                 if(b<100){
33                     mString="sxf";
34                 }
35                 if(mString.equals(dd)){
36                     return true;
37                 }
38                 return false;
39             }
40         });
41
42
43         System.out.println("enclosing_type.enclosing_method()"+aString);
44     }
45
46
47     public static void main(String[] args) {
48         TestController controller=new TestController();
49         controller.testPay();
50     }
51 }

时间: 2024-10-13 23:32:11

java基础之:匿名内部类应用例子一的相关文章

java基础04 匿名内部类

内部类 (1)把类定义在另一个类的内部,该类就被称为内部类. 举例:把类B定义在类A中,类B就被称为内部类. (2)内部类的访问规则 A:可以直接访问外部类的成员,包括私有 B:外部类要想访问内部类成员,必须创建对象 (3)内部类的分类 A:成员内部类 B:局部内部类 (4)成员内部类 A:private 为了数据的安全性 B:static 为了访问的方便性 成员内部类不是静态的: 外部类名.内部类名 对象名 = new 外部类名.new 内部类名(); 成员内部类是静态的: 外部类名.内部类名

java基础之匿名内部类

内部类: 概述: 类里边还有一个类, 里边那个类叫内部类, 外边那个类叫外部类. 分类: 成员内部类: 定义在成员位置的内部类. 局部内部类: 定义在局部位置的内部类. 格式: new 类名或者接口名(){ //重写类或者接口中 所有的 抽象方法; }; 本质: 就是一个继承了类或者实现了接口的 匿名的子类对象. 匿名内部类不是类, 而是子类对象. 匿名内部类的实际应用: 1) 当对 对象方法(成员方法) 仅调用一次的时候. 2) 可以作为方法的实参进行传递. 建议: 当接口中或者抽象类中的 抽

JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题

JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序员杜鹏程的博客:http://blog.csdn.net/m366917 我们来继续学习多线程 Lock锁的使用 虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock Lock void lock():获取锁 v

java基础之内部类

java内部类,本是非常基础的,在分析一些开源框架源码时候或者看jdk源码的时候,就会发现用到大量的内部类.但是在实际工作中,尤其对于新手来说,根本不知道内部类有什么用处.说白了还是对内部类的基本原理不够清晰,没有掌握好这个基础,所以才不知道内部类有什么用处. 本人也是一边总结基础一边学习一边成长中. 关于内部类: java有四种内部类: ①静态内部类(static inner class) ②成员内部类(member inner class) ③局部内部类(local inner class)

Java基础面试题集(二)

Java程序员面试题集(1-50) 一.Java基础部分 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么. 2)继承:继承是从已有类得到继承信息创建新类的过程.提供继承信息的类被称为父类(超类.基类):得到继承信息的类被称为子类(派生类). 3)封装:通常认为封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面.面向

四、Android学习第四天——JAVA基础回顾(转)

(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 四.Android学习第四天——JAVA基础回顾 这才学习Android的第四天,在程序中已经遇到了JAVA中以前不常用的一些知识点,赶紧回顾复习一下,打下基础 这里就做个简单的小结: 一.匿名内部类 匿名内部类说白了就是个没有被命名的JAVA类 在以下条件下使用匿名内部类比较适合: ①只用到该类的一个实例时 ②类在定义后被马上用到 ③类非常小(SUN推荐是在4行代码以下

java基础之:详解内部类(转载)

可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 第一次见面 内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类. [java] view plain copy print? public class OuterClass { private String name ; private int age; public String getName() {

黑马程序员——Java基础知识之多线程协同

多线程协同 线程间的通讯:对资源的操作动作不同,比如说两个卡车一个拉煤一个装煤,但是他们共享了一个资源. 怎么样把这个资源拿出来?怎样把车装满?这个资源当然是一个类,他里面的组成元素就是对象!!现在我们就要有操作对象的思想了,用对象把这车装满,现在一车装一个对象. 等待唤醒机制: 用的不是sleep是wait.flag标记,这是两人沟通的方式.其实每个标记就要做一次等待或者notify,判断wait,改值notify.线程池.notify唤醒里面的线程,按顺序唤醒.wait和notify必须用在

java基础面试题(转)

JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象.2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类).派

Java基础进阶整理

Java学习笔记整理 本文档是我个人整理的,首先是想通过完成本文档更加扎实自己的基础加强对java语言的理解,然后就是想给入了门的同志们做下贡献. 当然,本文档主要是对java语言基础(当然还有很多基础没有涉及到)的进行较全面的理解已经整理,只要充分掌握了基础知识,学习高级部分的知识才会事半功倍犹如轻车熟路一般容易上手. 正文: CLASSPATH的设置:我们知道运行java必须要设置CLASSPATH环境变量,但是sun  java 1.4之后改进了设计,JRE会自动搜索当前路径下的类文件,而