java 内部类

java内部类,可以分3类,1是成员内部类,2是方法内部类,3是静态内部类。每一类都有自己的特点,总结如下:

第1类,和普通的类差不多,但不能定义静态成员变量和方法,编译后会带上外部类的类名。

第2类,和方法平级,可以访问方法的参数和局部变量,但必须定义为final类型,这个主要是由于作用域的区别,因为方法退出之后,参数和局部变量就不存在了,但是内部类对象

不会立马删除,所以这些参数和局部变量必须定义为final类型。另外,它也不能定义静态成员变量和方法。

第3类,可以定义静态方法和属性,也可以定义非静态方法和属性,可以访问外部类的静态熟悉,但是不能访问非静态熟悉。

主要的实例代码如下:

package com.basic.innerclass;

public class BasicInnerClass {
	
	private String var;
	
	private static String tt; 
	public BasicInnerClass(String var) {
		this.var = var;
	}
	
	public static void main(String argv[]) {
		
		BasicInnerClass bsc = new BasicInnerClass("BasicInnerClass");
		bsc.test("parameter");
		
		b x = bsc.new b();
		b y = bsc.getInner();
		
		c z = new BasicInnerClass.c();
		x.print();
		y.print();
		z.print();
		
		return;
	}
	
	public void test(final String str) {
		final String s = "varibility";
		class a {
			private int xx;
			public void print() {
				System.out.println(s);
				System.out.println(str);
				System.out.println(var);
			}
		}
		new a().print();
	}
	
	public b getInner() { 
        return new b(); 
    } 
	
	public class b {
		private String tmp;
				
		public void print() {
			System.out.println(tmp);
			System.out.println(var);
		}
	}
	
	static public class c {
		private static String tmp = "static";
		
		public static void test() {
			System.out.println(tt);
		}
		public void print() {
			System.out.println(tmp);
			System.out.println(tt);
		}
	}
}


你可能感兴趣的:(java 内部类)