欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

内部类详解及举例说明

程序员文章站 2022-03-06 17:07:57
...

内部类(Inner Class),内部类共分为4种。
1.静态内部类(static inner class):只能访问外部类的静态成员变量与静态方法,生成
静态内部类对象的方式为:
OuterClass.InnerClass inner = new OuterClass.InnerClass();
2.成员内部类(member inner class):可以访问外部类的静态与非静态的方法与成员变
量。生成成员内部类对象的方式为:
OuterClass.InnerClass inner = new OuterClass().new InnerClass();
若想在局部内部类中访问外部类的成员变量,语法为:OuterClass.this.a;
3.局部内部类(Local Inner Class):定义在方法当中,只能访问方法中声明的final类型
的变量。
4.匿名内部类(Anonymous Inner Class):没有类名称的局部内部类;匿名内部类会隐式地继承一个父类或实现一个接口。

 

静态内部类和成员内部类比较简单在此就不举例了。

局部内部类代码示例:

package com.lfl.innerclass;

class LocalInner {
	private  int a = 3;
	
	public void doSomething() {
		final int i = 5;
		class Inner3 {
			
			public void test() {
				System.out.println(i);
				System.out.println(a);
				go();
			}
		}
		new Inner3().test();
	}
	
	public static void go() {
		System.out.println("hello");
	}
	
}


public class LocalInnerClassTest {

	public static void main(String[] args) {
		LocalInner inner = new LocalInner();
		inner.doSomething();
	}

}

 

 

匿名内部类代码示例:

package com.lfl.innerclass;

import java.util.Date;

public class AnonymousInnerClassTest {
	
	public String get(Date date) {
		return date.toLocaleString();
	}
	
	public Object getObject() {
		return new Object() {
			public String toString() {
				System.out.println("hello world2");
				return "hello";
			}
		};
	}
	

	public static void main(String[] args) {
		AnonymousInnerClassTest inner = new AnonymousInnerClassTest();
		// non anonymous innerclass
		String date = inner.get(new Date());
		System.out.println(date);
		
		//anonymous innerclass
		String str = inner.get(new Date() {
			public String toLocaleString() {
				return "hello world";
			}
		});
		System.out.println(str);
		
		Object obj = inner.getObject();
		String s = obj.toString();
		System.out.println(s);
	}

}