四种内部类
Posted fangtingfei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四种内部类相关的知识,希望对你有一定的参考价值。
/**
* 内部类有四种
* 1,静态内部类
* 2,成员内部类
* 3,局部内部类
* 4,匿名内部类
*/
1 /**
2 * 内部类有四种
3 * 1,静态内部类
4 * 2,成员内部类
5 * 3,局部内部类
6 * 4,匿名内部类
7 */
8
9 public class TestInnerClass {
10 private final String name1="Outter";
11 private String name3="Test";
12 //静态内部类,用static修饰的内部类,不能访问外部类的非静态成分,对于外部类来说,相当于一个独立的类,在单例模式的懒汉式中有一种使用静态内部类的思路
13 //静态内部类对于外部类来说,只是包含的关系,缩小了命名空间,完整类名中多了一个外部类的名称,本质上是两个独立的类,JVM也不知道他两个之间的关系
14 public static class Inner1{
15 //。。。
16 }
17
18 //成员内部类,需要外部类实例化了对象后才会被加载到JVM中,属于外部类的一个成员,可以访问外部类的静态和非静态成分
19 //创建实例是需要先创建一个外部类的实例,在用这个实例调用new语句
20 //对于成员内部类的构造方法,是系统自动为其传入外部类的引用,达到访问外部类成分的目的: Inner2(Outter outter){...}
21 public class Inner2{
22 private final String name2="Inner2";
23 public String toString() {
24 System.out.println(name1);
25 return "Inner2{"+"name=‘" + name2 + ‘‘‘ + ‘}‘;
26 }
27 }
28
29
30 //局部内部类,在方法中定义的类,仅在定义它的方法中有效,作为方法短暂使用的类,不能用static关键字修饰,可以访问外部类的成员变量,能访问外部类static修饰的局部变量
31 //在方法中实例化
32 public void testInnerClass(){
33 class Inner3{
34 private String name4=name3;
35 }
36 }
37
38 //匿名内部类,new一个接口。如:
39 Runnable runnable=new Runnable() {
40 @Override
41 public void run() {
42
43 }
44 };
45
46 public static void main(String[] args) {
47 TestInnerClass testInnerClass=new TestInnerClass();
48 Inner2 inner2=testInnerClass.new Inner2();
49 System.out.println(inner2);
50 }
51 }
以上是关于四种内部类的主要内容,如果未能解决你的问题,请参考以下文章