我是靠谱客的博主 义气篮球,最近开发中收集的这篇文章主要介绍java中局部内部类_Java中的内部类 普通嵌套类 局部内部类 匿名内部类 静态内部类 浅析...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

import java.util.Date;

import java.util.Random;

public class InnerClassTest {

/**

* 静态方法只能创建静态内部类的对象

* @param args

*/

public static void main(String[] args) {

InnerClassTest ict = new InnerClassTest();

ict.say("Test");

InnerClass2 ic2 = new InnerClass2();

//InnerClass1 ic1 = new InnerClass1();//错误

InnerClassTest.InnerClass1 icic1 = ict.new InnerClass1();

}

/**

* 非静态方法可以创建各种内部类对象

* 局部内部类和匿名内部类能够访问方法中的final参数或者是final的局部变量

* @param var final类型的局部参数

*/

public void say(final String var){

final int[] array = new int[1];

/**

* 局部内部类 不能有修饰符

* 对外界完全隐蔽

* @author Administrator

*

*/

class InnerClass3 {

public void say() {

System.out.println("InnerClass3 " + id);

System.out.println("InnerClass3 " + InnerClassTest.this.id);

System.out.println("InnerClass3 " + nextId);

array[0] = 1;

System.out.println(var);

}

}

InnerClass3 ic3 = new InnerClass3();

InnerClass1 ic1 = new InnerClass1();

InnerClass2 ic2 = new InnerClass2();

/**

* 匿名内部类 不能有构造器 一般是实现某个接口或者继承某个类

* 可以把参数传递给父类的构造器

* 返回一个实现了某个接口或者继承了某个类的新类的一个对象

*/

Date newDate = new Date(){

public String toString() {

System.out.println("InnerClass3 " + id);

System.out.println("InnerClass3 " + InnerClassTest.this.id);

System.out.println("InnerClass3 " + nextId);

array[0] = 1;

System.out.println(var);

return super.toString() + " 匿名内部类";

}

};

ic1.say();ic2.say();ic3.say();

System.out.println(newDate.toString());

}

{

id = nextId;

nextId ++;

}

static {

nextId = new Random().nextInt(1000);

}

public class InnerClass1 {

public void say() {

System.out.println("InnerClass1 " + id);

System.out.println("InnerClass1 " + InnerClassTest.this.id);

System.out.println("InnerClass1 " + nextId);

}

}

public static class InnerClass2 {

public void say() {

//System.out.println(id);

System.out.println("InnerClass2 " + nextId);

}

}

/**

* 静态内部类只能访问外围类的static实例域

* 其他内部类两者都能访问

* 访问方式:

* 1.直接用变量名访问

* 2.InnerClass.this.id 或 InnerClass.nextId

*/

private int id;

private static int nextId;

}

class OuterClass {

public void say() {

/*创建 public 静态内部类对象*/

InnerClassTest.InnerClass2 icic2 = new InnerClassTest.InnerClass2();

/*创建 public 普通静态内部类*/

/*必须先创建外围类对象*/

InnerClassTest ict = new InnerClassTest();

InnerClassTest.InnerClass1 icic1 = ict.new InnerClass1();

}

}

最后

以上就是义气篮球为你收集整理的java中局部内部类_Java中的内部类 普通嵌套类 局部内部类 匿名内部类 静态内部类 浅析...的全部内容,希望文章能够帮你解决java中局部内部类_Java中的内部类 普通嵌套类 局部内部类 匿名内部类 静态内部类 浅析...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部