java自学笔记————内部类几种类型;

                     将一个类定义在另一个类的里面,对里面那个类就称为内部类(内置类,嵌套类)。

 

        当描述事物时,事物的内部还有事物,该事物用内部类来描述。因为内部事物在使用外部事物的内容。如定义一个描述人的类,而手、心脏等都属于人,然它们又有自己的功能描述,这时可以在人这个描述类中,定义一个描述心脏的类,也就是内部类。

 

        编译时,如果代码中有内部类,生成的class文件中会含有这样的文件:Test$1.class。编译器将会把内部类翻译成用$(美元符号)分隔外部类名和内部类名的常规类文件。这是内部类的一种编译现象。

public class Blog4 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//获取内部类对象
		Outer.inner  oi =new Outer().new inner();
		//调用内部类的方法
		  oi.methodInner();
		  //获取静态内部类
		  Outer.staticInner os = new Outer.staticInner();
		  //静态方法
		  os.staticMethodInner();
               
	}

}
class Outer{
	private String str = "Outer";
	//私有静态变量
	private static  String staticString = "staticouterstring";
	//内部类
	public class inner{
		
		 void methodInner(){
			
			System.out.println(str+"----");
		}
	}
	//静态内部类
	public static class staticInner{
		
		void staticMethodInner(){
			System.out.println(staticString+"------");
		}
	}
	//成员方法
	public void methodOuter(){
		
		new inner().methodInner();
	}
}

内部类的种类:(成员、局部、静态、匿名)

1.成员内部类
  2.局部内部类 
  3.匿名内部类

1.成员内部类


//1.成员内部类
public class Blog41

{

	class student

	{

		void getSome()

		{

			System.out.println("我是内部类!");

		}

	}

}


 

 


 
  

 

 2.局部内部类


public class Blog42 {

	/**
	 * @param args
	 */
	//局部内部类
	class LocalInner {

	    public void doSomething(int b) {   
	        final int a = 3;// 只能访问final的变量

	        class Inner3 {

	            public void test(int b) {

	                System.out.println(b);

	                System.out.println(a);

	            }

	        }

	        new Inner3().test(b);

	    }

	}

}

3:匿名内部类


import java.io.File;
import java.io.FilenameFilter;

public class Blog43 {

	/**
	 * @param args
	 */
	// 3:匿名内部类
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("D:\\interview");

		File[] filelist = file.listFiles(new FilenameFilter() {
			public boolean accept(File dir, String name) {

				return name.endsWith(".java");
			}

		});

		for (File files : filelist) {

			System.out.println(files.getName());
		}

	}

}

/*
 * 内部类:一个内部类的定义是定义在另一个内部的类。 原因是: 
 * 1.一个内部类的对象能够访问创建它的对象的实现,包括私有数据。
 *  2.对于同一个包中的其他类来说,内部类能够隐藏起来。
 *  3.匿名内部类可以很方便的定义回调。 
 *  4.使用内部类可以非常方便的编写事件驱动程序
 */


 


 

 

 

你可能感兴趣的:(java自学笔记————内部类几种类型;)