`
flyingis
  • 浏览: 296696 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

    作者:Flyingis

    内部类是
Java语言一个重要的基本特性,在Java开发的许多领域都会经常用到。内部类的定义说简单一点就是将一个类定义在另外一个类的内部。内部类允许你把一些逻辑相关的类组织在一起,控制内部类代码的可视性,它和类的组合是完全不同的概念。内部类主要有以下比较关键的特性:<!----><o:p></o:p>

<o:p> </o:p>

1.  普通的非内部类不能被声明为privateprotected,否则就失去了创建该类的意义。但是内部类通常可以被声明为privateprotected类型,因为这样可以防止他人对该内部类实现的功能进行修改,达到隐藏实现细节的目的。例如:<o:p></o:p>

class Fruit {<o:p></o:p>

  private class Weight {<o:p></o:p>

private String i;<o:p></o:p>

private Weight(String j) {<o:p></o:p>

  i = j;<o:p></o:p>

}<o:p></o:p>

public String read() {<o:p></o:p>

  return i;<o:p></o:p>

}<o:p></o:p>

}<o:p></o:p>

}<o:p></o:p>

class test {<o:p></o:p>

  public static void main(String[] args) {<o:p></o:p>

Fruit f = new Fruit();<o:p></o:p>

f.Weight w = f.new Weight(); //不能访问private类,如果Weightprotected类型则可以<o:p></o:p>

}<o:p></o:p>

}<o:p></o:p>

2.  在方法或某控制语句(if/for/while)的作用域内定义内部类,将只能在该范围内调用内部类的方法和成员变量。<o:p></o:p>

3.  匿名内部类是一种特殊的内部类,如果希望它使用一个在其外部定义的对象,那么编译器会要求其参数引用是final的。<o:p></o:p>

public class Fruit {<o:p></o:p>

  public Tea cont(final int j) {<o:p></o:p>

return new Tea() {<o:p></o:p>

  private int i = j;<o:p></o:p>

  public int read() {<o:p></o:p>

    return i;<o:p></o:p>

}<o:p></o:p>

}; //注意这里的分号<o:p></o:p>

}<o:p></o:p>

public static void main(String[] args) {<o:p></o:p>

  Fruit f = new Fruit();<o:p></o:p>

  Tea t = f.cont;<o:p></o:p>

}<o:p></o:p>

}<o:p></o:p>

而当方法cont(final int j)中的参数j只是被传递到匿名类中的构造器时,可以不用被声明为final类型,如return new Tea(j)。这里提到了匿名内部类的构造器,那么它是怎么被初始化的呢?<o:p></o:p>

public class Fruit {<o:p></o:p>

  public Tea cont(int j) {<o:p></o:p>

return new Tea(j) {<o:p></o:p>

System.out.println(j);<o:p></o:p>

}; <o:p></o:p>

}<o:p></o:p>

}<o:p></o:p>

         还可以这样初始化匿名内部类:<o:p></o:p>

public class Fruit {<o:p></o:p>

  public Tea cont(final int j) {<o:p></o:p>

return new Tea(j) {<o:p></o:p>

  int i;<o:p></o:p>

  // 初始化匿名内部类<o:p></o:p>

  {<o:p></o:p>

  i = j;<o:p></o:p>

  System.out.print(i);<o:p></o:p>

}<o:p></o:p>

}; <o:p></o:p>

}<o:p></o:p>

}<o:p></o:p>

         方法cont()可以被称为实例初始化方法,使得匿名内部类通过构造器而被初始化,在实际应用中,我们不能重载实例初始化方法,因为匿名内部类只能有一个构造方法。
分享到:
评论

相关推荐

    java内部类的讲解

    ### Java内部类详解 #### 一、内部类的分类与概念 Java的内部类机制是其强大特性之一,它允许类作为另一个类的成员存在,从而增强了代码的封装性和复用性。根据定义和作用域的不同,Java内部类主要分为四类: 1. ...

    Java 干货之深入理解Java内部类(学习资料)

    Java 内部类是 Java 语言的一个重要特性,允许在一个类的定义内嵌套其他类。这使得 Java 能够实现一些特殊的编程模式,比如模拟多重继承和解决多次实现问题。内部类根据其定义的位置和用途,可以分为四种类型:成员...

    JAVA 内部类 PPT

    Java内部类是Java语言的一个独特特性,它允许我们在一个类的内部定义另一个类。这种设计提供了更高级别的封装和组织代码的方式。以下是关于内部类及其相关知识点的详细说明: 1. **内部类基本语法** - **实例内部...

    java 内部类应用

    Java内部类是Java语言的一个特色特性,它允许我们在一个类的内部定义另一个类。这种设计模式在处理一些特定情况时非常有用,例如实现匿名回调、封装特定逻辑或创建与外部类有紧密关系的类。本篇文章将深入探讨Java...

    java内部类使用例子

    Java内部类是Java语言提供的一种独特特性,它允许我们在一个类的定义内部定义另一个类。这种内部类可以是成员内部类、局部内部类、匿名内部类或静态内部类,每种都有其特定的用途和使用场景。在这个"java内部类使用...

    Java 内部类

    Java 内部类是Java语言特性中的一个重要组成部分,它允许我们在一个类的内部定义另一个类。内部类可以访问外部类的所有成员,包括私有成员,这使得内部类在实现复杂逻辑和封装上具有很大的灵活性。下面我们将详细...

    JAVA内部类总结

    ### JAVA内部类总结 在Java编程语言中,内部类(Inner Classes)是一种非常重要的特性,它允许我们在一个类的内部定义另一个类。这种结构不仅能够提高...希望本文能帮助开发者更好地理解和应用Java内部类的相关知识。

    java 匿名内部类的使用规范

    本篇文章将深入探讨Java匿名内部类的使用规范,帮助你更好地理解和应用这一特性。 首先,理解匿名内部类的基本概念。匿名内部类没有名字,它不能被其他类直接引用,但可以作为局部变量、成员变量或者方法参数。它...

    java 内部类 局部内部类 匿名类 实例代码

    Java内部类是Java语言特性中一个独特而强大的部分,它允许在一个类的内部定义另一个类。内部类可以访问外部类的所有成员,包括私有成员,这使得内部类在实现某些特定设计模式时非常有用。本篇文章将深入探讨Java中的...

    java基础java内部类

    Java 内部类是 Java 语言的一个重要特性,它允许在一个类的内部定义另一个类。内部类的概念在 Java 中有着广泛的应用,特别是在处理复杂的继承问题和实现特定设计模式时。以下将详细介绍 Java 内部类的基本概念、...

    有关JAVA的内部类的好东西

    Java内部类是Java语言中一个独特且强大的特性,它允许在一个类的定义内部定义另一个类。内部类可以访问外部类的所有成员,包括私有成员,这使得内部类在实现某些特定设计模式时非常有用。本篇文章将深入探讨Java内部...

    java静态内部类(嵌套类)

    #### 一、静态内部类概念与特性 在Java编程语言中,静态内部类(也被称为嵌套类)是一种特殊的内部类形式,它通过`static`关键字来定义。与普通内部类相比,静态内部类具有以下显著特点: 1. **创建对象无需依赖...

    java代码笔记2010-06-01:Java内部类 静态内部类 局部内部类 明明内部类;StringBuffer reverse的使用;

    Java内部类是Java语言中一个独特且强大的特性,它允许我们在一个类的内部定义另一个类。内部类可以分为四种类型:静态内部类、成员内部类(非静态内部类)、局部内部类和匿名内部类。 1. **静态内部类**: 静态...

    java内部类学习资料

    Java内部类是Java编程语言中的一个特色特性,它允许在一个类的定义内部定义另一个类。这种设计模式在处理一些特定的复杂情况时非常有用,比如实现事件监听、封装临时对象或者创建私有辅助类等。以下是对Java内部类的...

    java 集合和内部类资料

    Java集合框架是Java编程...总之,这个资料包涵盖了Java集合框架和内部类的基础知识,对于想要深入理解Java编程的开发者来说,是一份宝贵的学习资源。通过学习,你可以提升在处理数据集合和实现复杂设计模式上的能力。

    java内部类应用详解

    Java内部类是Java语言中一个独特且强大的特性,它允许我们在一个类的内部定义另一个类。内部类可以作为外部类的成员,具有访问外部类的所有域的权限,无论是public、protected还是private。这种访问能力使得内部类能...

    java内部类的使用

    Java内部类是Java语言中一个独特且强大的特性,它允许在一个类的定义内部定义另一个类。内部类可以分为四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。本文主要讨论非静态内部类(也称为实例内部类)的...

    Java4Android 35_内部类和匿名内部类

    学习“Java4Android 35_内部类和匿名内部类”这个教程,开发者将掌握如何有效地利用内部类和匿名内部类,提升代码的结构和功能,特别是在Android应用开发中,这两个特性对于构建组件和事件处理尤为重要。通过观看...

    Java 匿名内部类

    Java匿名内部类是Java语言中一个独特且强大的特性,它允许我们在不定义单独类的情况下创建对象。这种类没有名字,通常用作一次性实现某个接口或继承某个类的需求。在Java编程中,匿名内部类主要用于事件处理、回调...

Global site tag (gtag.js) - Google Analytics