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

来源:互联网 发布:知轩藏书盗墓笔记 编辑:程序博客网 时间:2024/06/15 12:30

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

 

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

 

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

<pre class="java" name="code">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 stubFile 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.使用内部类可以非常方便的编写事件驱动程序 */


 


 

 

 

0 0