java开发之内部类的用法

在java的开发中,java开发人员建议,尽量少用内部类,要把内部类提出他所处的那个类,单独生成一个类。
直接来代码:


代码如下:

package com.b510;

/**
  * 内部类之间的调用
  *
  * @author Hongten
  *
  * @time 2012-3-19 2012
  */
 public class InnerClassTest {

public static void main(String[] args) {
         // 这是InnerClassTest的一个实例
         InnerClassTest innerClassTest = new InnerClassTest();
         innerClassTest.sayHelloworld();

// 这是类A的一个实例
         InnerClassTest.A ia = innerClassTest.new A();
         ia.aSayHello();

// 这是InnerClassB的一个实例
         InnerClassTest.A.InnerClassB iab = ia.new InnerClassB();
         iab.bSayHello();

// 这是InnerClassC的一个实例
         InnerClassTest.A.InnerClassB.InnerClassC iabc = iab.new InnerClassC();
         iabc.cSayHello();

// 这是InnerClassD的一个实例
         InnerClassTest.A.InnerClassD iad = ia.new InnerClassD();
         iad.dSayHello();

// 这是InnerClassE的一个实例
         InnerClassTest.A.InnerClassB.InnerClassC.InnerClassE iabce = iabc.new InnerClassE();
         iabce.eSayHello();

// 当然在我们调用InnerClassE的时候,还可以写成这样
         InnerClassTest.A.InnerClassB.InnerClassC.InnerClassE e = new InnerClassTest().new A().new InnerClassB().new InnerClassC().new InnerClassE();
         System.out.println("======================分隔符====");
         e.eSayHello();
     }

// 类InnerClassTest中的方法
     public void sayHelloworld() {
         System.out.println("i am Test,HelloWorld!");
     }

/**
      * 定义A类,他是InnerClassTest类的内部类
 */
     class A {
         // 类A中的方法
         public void aSayHello() {
             System.out.println("i am A,helloworld!");
         }

/**
          * 定义InnerClassB类,他继承类A
 */
         class InnerClassB extends A {
             // 类InnerClassB中的方法
             public void bSayHello() {
                 System.out.println("i am B,helloworld");
             }

/**
              * 定义InnerClassC类,他是InnerClassB的内部类
 */
             class InnerClassC {
                 // 类InnerClassC中的方法
                 public void cSayHello() {
                     System.out.println("i am C,helloworld!");
                 }

/**
                  * 定义InnerClassE类,他是InnerClassC的内部类
 */
                 class InnerClassE {
                     // 类InnerClassE中的方法
                     public void eSayHello() {
                         System.out.println("i am E,Helloworld!");
                     }
                 }
             }
         }

/**
          * 定义InnerClassD类,他是A的内部类
 */
         class InnerClassD {
             // 类InnerClassD中的方法
             public void dSayHello() {
                 System.out.println("i am D,Helloworld!");
             }
         }
     }
 }

运行效果:


代码如下:

i am Test,HelloWorld!
 i am A,helloworld!
 i am B,helloworld
 i am C,helloworld!
 i am D,Helloworld!
 i am E,Helloworld!
 ======================分隔符====
 i am E,Helloworld!

(0)

相关推荐

  • java中关于内部类的使用详解

    内部类访问规则 •内部类可以直接访问外部类中的成员,包括私有.访问格式:外部类名.this•外部类要访问内部类必须创建内部类对象.•内部类在成员位置上,可以被成员修饰符修饰. 复制代码 代码如下: public class InnerClassDemo1 {     public static void main(String[] args){         Outer ou =new Outer();         ou.method();// 4  3         Outer.Inn

  • java中的匿名内部类详细总结

    匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法 复制代码 代码如下: abstract class Person {     public abstract void eat(); } class Child extends Person {     public void eat() {         System.out.printl

  • java中匿名内部类解读分析

    这段时间在看android,看到了java里面的匿名内部类,在印象当中.net里面不支持匿名内部类. 匿名类是不能有名称的类,所以没办法引用它们.必须在创建时,作为new语句的一部分来声明它们.这就要采用另一种形式的new语句,如下所示: new <类或接口> <类的主体> 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口.它还创建那个类的一个新实例,并把它作为语句的结果而返回.要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体.

  • java匿名内部类实例简析

    匿名类是不能有名称的类,所以没办法引用它们.必须在创建时,作为new语句的一部分来声明它们.这就要采用另一种形式的new语句,如下所示: new <类或接口> <类的主体> 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口.它还创建那个类的一个新实例,并把它作为语句的结果而返回.要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体.如果匿名类对另一个类进行扩展,它的主体可以访问类的成员.覆盖它的方法等等,这和其他任何标准的类都是一样

  • Java内部类的继承(全)

    下面通过实例代码给大家分享下有关JAVA内部类的继承,具体详解如下: Java内部类的构造器必须连接到指向其外围类对象的引用(构造内部类必须给它一个外部类对象的引用,内部类依赖于外部类对象),所以在继承内部类的时候,需要在导出类的构造器中手动加入对基类构造器的调用. 因为,在导出类实例化时,并不存在一个外围类对象,以让导出类的实例去连接到它. 所以,我们需要创建一个外围类,然后用一个特定的语法来表明内部类与外围类的关系. 在下例子中,需要给导出类InheritInner一个来自内部类的外围类中的

  • 基于java内部类作用的深入分析

    提起Java内部类(Inner Class)可能很多人不太熟悉,实际上类似的概念在C++里也有,那就是嵌套类(Nested Class),关于这两者的区别与联系,在下文中会有对比.内部类从表面上看,就是在类中又定义了一个类(下文会看到,内部类可以在很多地方定义),而实际上并没有那么简单,乍看上去内部类似乎有些多余,它的用处对于初学者来说可能并不是那么显著,但是随着对它的深入了解,你会发现Java的设计者在内部类身上的确是用心良苦.学会使用内部类,是掌握Java高级编程的一部分,它可以让你更优雅地

  • 简单谈谈java中匿名内部类构造函数

    先看看下面的代码能不能编译通过: public static void main(String[] args) { List l1 = new ArrayList(); List l2 = new ArrayList(){}; List l3 = new ArrayList(){{}}; System.out.println(l1.getClass() == l2.getClass() ); System.out.println(l2.getClass() == l3.getClass() );

  • Java 基础之内部类详解及实例

     Java 基础之内部类详解及实例 内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类 如同一个人是由大脑.肢体.器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液.跳动) 显然,此处不能单方面用属性或者方法表示一个心脏,而需要一个类 而心脏又在人体当中,正如同是内部类在外部内当中  实例1:内部类的基本结构 //外部类 class Out { private int age = 12; //内部类 class In { public vo

  • Java嵌套类和内部类详解

    一.什么是嵌套类及内部类? 可以在一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它有两种类型: 静态嵌套类和非静态嵌套类.静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为 内部类(inner).嵌套类从JDK1.1开始引入.其中inner类又可分为三种: 其一.在一个类(外部类)中直接定义的内部类:     其二.在一个方法(外部类的方法)中定义的内部类;     其三.匿名内部类. 下面,我将说明这几种嵌套类的使用及注意事项. 二.静态嵌套类 如下所示代

  • java开发之内部类的用法

    在java的开发中,java开发人员建议,尽量少用内部类,要把内部类提出他所处的那个类,单独生成一个类.直接来代码: 复制代码 代码如下: package com.b510; /**  * 内部类之间的调用  *   * @author Hongten  *   * @time 2012-3-19 2012  */ public class InnerClassTest { public static void main(String[] args) {         // 这是InnerCl

  • Java开发之内部类对象的创建及hook机制分析

    本文实例讲述了Java内部类对象的创建及hook机制.分享给大家供大家参考,具体如下: Java中的内部类虽然在状态信息上与其外围类在状态信息是完全独立的(可直接通过内部类实例执行其功能),但是外围类对象却是内部类对象得以存在的基础. 内部类对象生成的时候,必须要保证其能够有外围类对象进行挂靠(hook),从而java提供了严格的内部类对象生成的语法. 一般惯用两种方法,生成内部类对象. Method1: 使用  外围类实例.new  内部类名称() 的标准方法. Example 1: publ

  • Java面向对象之内部类案例讲解

    1. 内部类 很多时候我们创建类的对象的时候并不需要使用很多次,每次只使用一次,这个时候我们就可以使用内部类了 1.1 内部类概述 内部类就是在一个类的内部在定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了. 内部类不是在一个java源文件中编写俩个平行的俩个类,而是在一个类的内部再定义另外一个类. 我可以把外边的类称为外部类,在其内部编写的类称为内部类. 内部类分为四种: 成员内部类 静态内部类 局部内部类 匿名内部类 1.2 成员内部类(

  • Java面向对象之内部类详解

    目录 前言 内部类概述 内部类的分类 成员内部类 局部内部类 前言 在 Java 中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类.本篇博客将总结内部类的使用. 内部类概述 当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构最好使用内部类. 在 Java 中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类. 内部类一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称.

  • 浅谈Java面向对象之内部类

    目录 内部类 访问外部对象 访问内部对象 局部内部类 匿名内部类 静态内部类 内部类 内部类是定义在另一个类中的类,例如 TalkingClock 类中内嵌了 TimePrinter 类: class TalkingClock{ private int interval; private boolean beep; public TalkingClock(int interval, boolean beep){} public void start(){} public class TimePr

  • Java基础之内部类与代理知识总结

    目录 一.内部类 1.1 创建内部类 1.2 内部类调用外部类的变量 二.局部内部类 2.1 外部方法访问变量 三.匿名内部类 四.lambda表达式结合局部内部类 五.静态内部类 六.代理 一.内部类 内部类是指在另一个类中的类 内部类可以对同一个包中的所有类隐藏(权限改为private) 内部类方法可以访问定义这个类的作用域中的数据,包括原本私有的数据 注意:内部类位于类的内部,并不意味着类的实例都必须要有内部类的实例 内部类是可以访问定义这个类的属性的,因为内部类的对象总有一个隐式引用,指

  • Java基本语法之内部类示例详解

    目录 1.内部类概念及分类 2.实例内部类 2.1实例内部类的创建 2.2使用.this和.new 2.3内部类实现迭代打印 2.4内部类的继承 3.静态内部类 4.匿名内部类 1.内部类概念及分类 将一个类定义在另一个类的内部或者接口内部或者方法体内部,这个类就被称为内部类,我们不妨将内部类所在的类称为外围类,除了定义在类,接口,方法中的内部类,还有一种特殊的内部类,那就是使用关键字new创建一个匿名类的对象,而这个匿名类其实就是一个内部类,具体说是一个匿名内部类,经常用于传入构造器实参构造对

  • Java开发中的容器概念、分类与用法深入详解

    本文实例讲述了Java开发中的容器概念.分类与用法.分享给大家供大家参考,具体如下: 1.容器的概念 在Java当中,如果有一个类专门用来存放其它类的对象,这个类就叫做容器,或者就叫做集合,集合就是将若干性质相同或相近的类对象组合在一起而形成的一个整体 2.容器与数组的关系 之所以需要容器: ① 数组的长度难以扩充 ② 数组中数据的类型必须相同 容器与数组的区别与联系: ① 容器不是数组,不能通过下标的方式访问容器中的元素 ② 数组的所有功能通过Arraylist容器都可以实现,只是实现的方式不

  • Java开发中synchronized的定义及用法详解

    概念 是利用锁的机制来实现同步的. 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问.互斥性我们也往往称为操作的原子性. 可见性:必须确保在锁被释放之前,对共享变量所做的修改,对于随后获得该锁的另一个线程是可见的(即在获得锁时应获得最新共享变量的值),否则另一个线程可能是在本地缓存的某个副本上继续操作从而引起不一致. 用法 修饰静态方法: //同步静态方法 public synchronized

随机推荐