免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1057 | 回复: 0
打印 上一主题 下一主题

关于JAVA 无参,带参匿名内部类 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-08 10:44 |只看该作者 |倒序浏览

// 接口 注意对比 Runnable接口,
package innerclass.noname;
public interface Interf {
public void run();
}
// 实现的子类 注意对比 Thread类
package innerclass.noname;
public class InterfImpl implements Interf{
Interf target;
public InterfImpl(Interf i){
  this.target=i;
}
public void run(){
  target.run();
}

public void startRun(){
  while(true){
   run();
  }
}
}
// 测试类Test 仿照于:http://blog.sina.com.cn/s/blog_493035f601007u42.html
private static void startWriterThread() {
       new Thread(new Runnable() {
            public void run() {
                byte[] outArray = new byte[2000];
                while(true) { // 无终止条件的循环
                    try {
                        // 在该线程阻塞之前,有最多1024字节的数据被写入
                        pipedOS.write(outArray, 0, 2000);
                    }
                    catch(IOException e) {
                        System.err.println("写操作错误");
                        System.exit(1);
                    }
                    System.out.println(" 已经发送2000字节...");
                }
            }
        }).start();// 注意:内部类使用哦........
    } // startWriterThread()

那么测试类 Test1 如下:
package innerclass.noname;
public class Test {
public void doSome(){
  new InterfImpl(new Interf(){
   public void run(){
    System.out.println("doSome");
   }
  }).startRun();
}
public static void main(String agr[]){
  new Test().doSome();
}
}
// 测试类2 Test2
如下: 一是:用于返回 匿名内部类实现类Obj 但是接口类型哦,然后调用接口实现的方法,二是:直接调用......
interface example {
    public void move();
}
class main{
example a=new example(){
          x++; }
   }
new example(){} 产生了一个example 的匿名子类,并一同实现了他,类型并转向了它...

package innerclass.noname;
public class test2 {
// 返回接口类型 obj;
// public Interf test(){
// return new Interf(){
// public void run(){
// System.out.println("+++++++++++++++");
// }
// };
// }
public void test2(){
   new Interf(){
  public void run(){
   System.out.println("+++++++++++++++");
   }
  }.run();
}
public static void main(String agr[]){
  new test2().test2();
  // new Test2().test().run();
}
}
// 带参匿名内部类
例子:参照:http://blog.sina.com.cn/s/blog_493035f601000ajb.html
如果这个匿名内部类继承了一个只含有带参数构造函数的父类,创建它的时候必须带上这些参数,并在实现的过程中使用super关键字调用相应的内容)

// 超类 带参构造函数
package innerclass.noname;
public class SuperClass {
int age;
public SuperClass(int age){
  this.age=age;
}
//实现类
package innerclass.noname;
public class InnerClass extends SuperClass {
public InnerClass(int age) {
  super(age);
}
}
// 测试类
package innerclass.noname;
public class TestInnerClass {
int age=21;
String name="李强";//不是final类型
blic void print(){
  new InnerClass(age){
  }.printAge(name);
}
public static void main(String agr[]){
  new TestInnerClass().print();
}
}
输出:李强 ‘age is 21


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/55983/showart_521510.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP