`
hehaibo
  • 浏览: 417632 次
  • 性别: 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 回调外部类的方法

内部类的类文件:

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

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

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

分享到:
评论

相关推荐

    内部类的相关知识-静态内部类,匿名内部类……

    ### 内部类的相关知识-静态内部类,匿名内部类…… #### 一、内部类概述 内部类(Inner Class)是 Java 中一种特殊类的定义方式,它允许在一个类的内部定义另一个类。这种设计模式提供了更为灵活的编程机制,可以...

    java知识总结------关键知识点总结

    - 匿名内部类没有名字,可以直接实例化一个接口或者继承一个非抽象类。但是,匿名内部类不能继承其他类,但可以实现一个或多个接口。 3. **Static Nested Class 和 Inner Class**: - 静态内部类(Static Nested ...

    JAVA内部类总结

    内部类分为四类:非静态成员内部类、静态成员内部类、局部内部类和匿名内部类。接下来将逐一介绍这四种类型的内部类。 #### 二、非静态成员内部类 非静态成员内部类是最常见的一种内部类形式,它具有以下特点: 1...

    Java中的内部类和匿名类

    Java 中的内部类和匿名类是非常重要的知识点,它们可以让你更优雅地设计你的程序结构。内部类可以隐藏你不想让别人知道的操作,提高程序的安全性和可维护性。匿名类可以用来实现一些简单的接口或抽象类,提高程序的...

    java中的匿名内部类总结

    总结一下,Java中的匿名内部类提供了一种简洁的方式来实现接口或扩展已有类,常用于事件处理、回调函数以及在特定场景下替代新的类定义。同时,了解Java Web开发中的Cookie、Session、localStorage和sessionStorage...

    java基础核心总结归纳---参考手册--心得手册-学习资料-总结经验

    - 内部类:在类内部定义的类,包括成员内部类、局部内部类、匿名内部类等。 - 集合框架:如ArrayList、Vector、LinkedList、HashSet、TreeSet、LinkedHashSet、HashMap等,用于存储和操作对象。 - 泛型:提供类型...

    内部类和设计模式1

    根据定义的位置,内部类可以分为四种类型:成员内部类、局部内部类、静态内部类和匿名内部类。 1. **成员内部类** - 成员内部类就如同外部类的成员一样,与成员变量和成员方法处于同一级别。 - 声明:`public ...

    java总结大全--包括所有java基础知识点.doc

    在 `InOut` 类中,`amethod` 方法定义了一个匿名内部类,它可以访问外部类的实例变量,包括私有变量。如果内部类定义在方法内部,它还可以访问该方法的局部变量,但这些变量必须声明为 `final`。这意味着它们是常量...

    Java内部类知识整理[归类].pdf

    根据位置和使用方式,内部类主要分为四种类型:成员内部类、静态嵌套类(静态内部类)、方法内部类和匿名内部类。 1. 成员内部类:这类内部类是作为外部类的成员存在的,与字段和方法处于同一级别。成员内部类的...

    JAVA基础知识精华总结

    3. **匿名内部类:** - 不需要名称,常用于实现接口或继承抽象类的场合。 #### 七、异常处理 1. **异常概述:** - 异常是在程序执行过程中发生的事件,可能中断正常的指令流程。 - Java中的异常处理机制主要...

    2024内部类,泛型枚举包装类

    匿名内部类是一种没有名字的内部类,常用于简化代码编写,特别是创建接口的实例时。 - **示例代码**: ```java interface MyInterface { void doSomething(); } public class Main { public static void main...

    老生常谈 java匿名内部类

    下面我们将详细探讨Java匿名内部类的相关知识点。 1. **什么是匿名内部类**: 匿名内部类,正如其名,是没有名字的内部类。它没有类名称,而是直接在需要使用的地方被定义,并且通常只被使用一次。这使得它可以...

    java 内部类应用

    首先,内部类可以分为四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。在给定的代码示例中,我们看到的是成员内部类的应用。成员内部类就像普通的类成员,可以访问外部类的所有成员,包括私有成员。在 `...

    内部类和枚举类.rar

    3. **匿名内部类**:没有名字的内部类,通常用于创建简短的、一次性使用的类。 4. **静态内部类**:可以被静态地实例化,无需对外部类的引用。 内部类的最大优点是可以访问外部类的私有成员,包括字段和方法,这...

    JavaSE 基础知识总结

    ### JavaSE基础知识总结 #### 一、Java特点与运行原理 **1.1 Java特点** - **简单性:** Java语言的设计目标之一是易于理解和使用,它的语法清晰、简洁。 - **面向对象:** Java是一种纯面向对象的语言,支持封装...

    抽象类、接口、内部类、异常

    根据其位置,内部类可以分为成员内部类、局部内部类、匿名内部类以及静态内部类。成员内部类就像外部类的成员,可以访问外部类的所有成员(包括私有成员)。局部内部类只存在于方法或作用域内,它的生命周期仅限于该...

    《SCJP学习指南》chap8

    3. **匿名内部类(Anonymous Inner Classes)**: - 匿名内部类是一种没有名字的内部类,通常用于实现接口或继承一个抽象类。 - 这种类没有显式的名字,因此不能被重复使用。 - 匿名内部类通常用于简化代码,特别...

    java-学习-面对对象-匿名对象

    当只需要用到接口的一个方法,且不需要长期保存该对象时,可以创建一个匿名内部类,直接实现接口并立即调用方法: ```java Button button = new Button() { public void onClick() { System.out.println("Button ...

Global site tag (gtag.js) - Google Analytics