`
hehaibo
  • 浏览: 410878 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

内部类知识总结3--匿名内部类

 
阅读更多

匿名类特点

1 匿名类本身没有构造方法,但是会调用父类的构造方法。

2 匿名类尽管没有构造方法,但是可以在匿名类中提供一段实例初始化代码。Java虚拟机会在调用了父类的构造方法后,执行这段代码。实例化代码和构造方法有同样的效果,前者允许被重载,匿名类实例只能有一种初始化方式。

publicclass A {

    A(int v) {

       System.out.println("参数构造函数");

    }

    A()

    {

       System.out.println("默认构造函数");

    }

    void method(){System.out.println("mehtod from A");}

   

    publicstaticvoid main(String[] args) {

       new A().method();

       A a =new A() //匿名类

       {

           void method()

           {

              System.out.println("from 匿名类");

           }

       };

       a.method();

       System.out.println("===================================");

       int v=3;

       A aa=new A(v) //匿名内部类调用父类的构造方法

       {

           void method()

           {

              System.out.println("from 匿名类");

           }

       };

       aa.method();

      

       System.out.println("*******************************");

       finalint vv=3;//必须定义为final

       A aaa=new A(v)

       {

           {//实例化初始代码

              };

          

            

           void method()

           {

              System.out.println("from 匿名类"+vv);

           }

       };

       aaa.method();

      

    }

}

3 在声明成员变量时定义匿名类

Abstract class A

{

    A a = new A()

{

       Void mehtod(){//代码}

}

Abstract void method();

}

4 匿名类还可以实现接口

Thread t = new Thread(new Runnable()

{

    Public void run(){//代码实现}

}

);

5 匿名内部类和局部内部类一样,可以访问外部类的所有成员。如果一个内部类中位于一个方法中还能访问所在方法的final类型的变量和参数。

6 局部内部类的名字在方法是不可见的,因此和匿名类一样,能够起到封装类型名字的作用。局部内部和匿名内部类的区别:

 1 匿名内部类的程序代码比较简短

 2 一个局部类可以有多个重载的构造方法,并且客户类可以多次创建局部类实例,而匿名类没有重载的构造的构造方法并且只能创建一次实例。

 

内部类中的接口和接口中的内部类:

publicclass Outer {

    //定义接口

    publicstaticinterface Tool{

       publicint add(int a,int b);

    }

    //匿名内部类

    private Tool tool =new Tool()

    {

       publicint add(int a,int b)

       {

           return a+b;

       }

    };

    publicvoid add(int a,int b)

    {

       this.tool.add(a, b);

    }

    publicvoid setTool(Tool tool)

    {

       this.tool=tool;

    }

    /**

     *@paramargs

     */

    publicstaticvoid main(String[] args) {

       // TODO Auto-generated method stub

    }

}

//实现类中的内部接口。

class MyTool implements Outer.Tool

{

    publicint add(int a, int b) {

       System.out.println(a+b);

       return a+b;

    }

   

}publicinterface InterfaceA {

    //在接口中定义静态内部类此时静态内部类位于接口的命名空间中

    staticclass B {

    };

    //class F{}

    publicvoid method(B b);

}

 

class C implements InterfaceA {

    //因为C类实现InterfaceA  B对于C可见

    B b = new B();

    publicvoid method(B b) {

    }

}

class D {

    //但是在类D中必须是下面这种新式访问。

    InterfaceA.B a = new InterfaceA.B();

    // B b =new B();//编译错误

}

内部类的用途

 1 封装类型

 顶层类只能处于public 和默认访问级别,而成员内部类可以处于publicprotected private 默认访问级别。如果一个内部类仅仅为特定的方法提供服务,那么可以把这个内部类定义在方法之类。

 2 直接访问外部类的成员

 3 回调外部类的方法

内部类的类文件:

命名规则成员内部类:外部类名字$内部类名字

         局部内部类:外部类名字$数字$内部类名字

         匿名类:外部类名字$数字。

分享到:
评论

相关推荐

    JAVA 面向对象程序设计第8章 内部类和泛型.pptx

    8.3.1 匿名内部类的实现 ;8.3.1 匿名内部类的实现 ;8.3.1 匿名内部类的实现 ;8.3.1 匿名内部类的实现 ;8.3.2 学生实践练习;8.3.3 学生实践练习;8.3.3 学生实践练习;8.4 泛型;8.4.1 泛型概述;8.4.1 泛型概述;8.4.2 ...

    java基础知识总结

    非常全的java基础知识总结,包括线程,IO,堆栈,内部类,匿名类,面试题等等

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    上架时间:2010-3-30 出版日期:2010 年3月 开本:16开 其他详细信息查看:http://www.china-pub.com/196571 编辑推荐 Java编程老鸟潜心写作,奉献高效率的Java学习心得 完全站在没有编程经验读者的角度,...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    上架时间:2010-3-30 出版日期:2010 年3月 开本:16开 其他详细信息查看:http://www.china-pub.com/196571 编辑推荐 Java编程老鸟潜心写作,奉献高效率的Java学习心得 完全站在没有编程经验读者的角度,...

    java面试知识点易错难点总结

    Java的操作原理,面向对象的概念,匿名对象:内部类,,单例设计,重载和覆盖的区别,异常的处理流程,字节流与字符流,内存操作流,正则表达式,web三大框架

    java 面试题 总结

    JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...

    传智播客扫地僧视频讲义源码

    16_友元函数实现操作符重载知识总结 17_重载等号操作符_传智扫地僧 18_数组类小案例_操作符重载需求 19_数组类小案例_重载[]_传智扫地僧 20_数组类小案例_重载等号_传智扫地僧 21_数组类小案例_重载==和!= 22_作业 ...

    Visual C++ 2005入门经典--源代码及课后练习答案

    7.11.3 类属性 351 7.11.4 initonly字段 364 7.11.5 静态构造函数 366 7.12 小结 367 7.13 练习 367 第8章 深入理解类 369 8.1 类的析构函数 369 8.1.1 析构函数的概念 369 8.1.2 默认的析构函数 ...

    Linux服务器配置与管理项目8--FTP服务器配置与管理.pptx

    (3)掌握匿名访问FTP服务器的配置方法。 (4)掌握具名访问FTP服务器的配置方法。 (5)掌握FTP服务器的安全管理方法。 Linux服务器配置与管理项目8--FTP服务器配置与管理全文共50页,当前为第3页。 预备知识 认识...

    ASP.NET4高级程序设计(第4版) 3/3

    15.2.5 公开内部Web控件 530 15.3 动态加载用户控件 531 15.4 局部页面缓存 534 15.4.1 VaryByControl 535 15.4.2 共享缓存控件 536 15.5 总结 537 第16章 主题和母版页 538 16.1 层叠样式表 538 ...

    深入理解Android:卷I--详细书签版

    looper类,掌握这些类的知识后方能在后续的代码分析中做到游刃有余;第6章以mediaserver为切入点,对android中极为重要的binder进行了较为全面的分析,深刻揭示了其本质。第7章对 audio系统进行了深入的分析,尤其...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

    7.11.3 定义引用类类型的复制构造函数 346 7.11.4 类属性 346 7.11.5 initonly字段 358 7.11.6 静态构造函数 360 7.12 小结 360 7.13 练习 360 7.14 本章主要内容 361 第8章 深入理解类 363 8.1 类析构函数 ...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    15.2.5 公开内部Web控件 15.3 动态加载用户控件 15.4 局部页面缓存 15.4.1 VaryByControl 15.4.2 共享缓存控件 15.5 总结 第16章 主题和母版页 16.1 层叠样式表 16.1.1 创建样式表 16.1.2 应用...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【基础】Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口? 30 【基础】Java 中的final关键字有哪些用法? 31 【基础】内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制? 31 ...

    整理后java开发全套达内学习笔记(含练习)

    nested [java] 嵌套的 ['nestid] '如:内部类(nested classes) Object [java] 对象 ['ɒbdʒekt] Overload [java] 方法的重载(不同参数列表的同名方法) [,әuvә'lәud] Override [java] 方法的覆盖(覆盖父类的...

    Android开发案例驱动教程 配套代码

    4.3.3 匿名内部类事件处理模型 51 4.4 Activity中的常用事件 53 4.4.1 触摸事件 53 4.4.2 键盘事件 55 4.5 菜单 57 4.5.1 文本菜单 57 4.5.2 图片文本菜单 59 本章小结 60 第5章 UI基础控件 61 5.1 按钮 61...

    IIS6.0 IIS,互联网信息服务

    IIS有默认的端口设置,只要稍有计算机知识的人都会记得这些端口的,要破解的话就十分的方便,所以尽量不要使用21这个默认端口号,并启用日志,以便FTP服务出现异常时检查。 [编辑本段]对IIS服务的远程管理  三、对...

Global site tag (gtag.js) - Google Analytics