Java中的内部类有四种(内部类作用1.封装装类型。 2.直接访问外部类成员。 3.回调。)内部类,方便他们的外部类调用,一般不会被其它类使用,比如事件监听器之类的,外部类刚好继承了一个别的类,如果你还要使用其它类,就可以在内部继承一个类。:
1、 静态类:static、inner、class(also called nested class)
最简单的内部类形式。
类定义时加上static关键字。 不能和外部类有相同的名字。 被编译成一个完全独立的.,名称为OuterClass$InnerClass.class的形式。 只可以访问外部类的和静态方法,包括了私有的和方法。 生成静态内部类对象的方式为: OuterClass.InnerClass inner = new OuterClass.InnerClass();
2、成员内部类:member、inner、class
成员内部类也是定义在另一个类中,但是定义时不用static修饰。
成员内部类和静态内部类可以类比为非静态的成员变量和静态的成员变量。 成员内部类就像一个。 它可以访问它的外部类的所有成员变量和方法,不管是静态的还是非静态的都可以。 在外部类里面创建成员内部类的实例: this.new Innerclass(); 在外部类之外创建内部类的实例: (new Outerclass()).new Innerclass(); 在内部类里访问外部类的成员: Outerclass.this.member3、局部类:local、inner、class
局部内部类定义在方法中,比方法的范围还小。是内部类中最少用到的一种类型。
像局部变量一样,不能被public, protected, private和static修饰。 只能访问方法中定义的final类型的局部变量。 局部内部类在方法中定义,所以只能在方法中使用,即只能在方法当中生成局部内部类的实例并且调用其方法。4、匿名内部类:anonymous、inner、class
匿名内部类就是没有名字的局部内部类,不使用关键字class, extends, implements, 没有构造方法。
匿名内部类隐式地继承了一个父类或者实现了一个接口。 匿名内部类使用得比较多,通常是作为一个方法参数。 生成的.中,匿名类会生成OuterClass$1.,数字根据是第几个匿名类而类推。
1. System类,可得到系统信息,经常用它来向屏幕以及控制台打印输出一些信息,如System.out.println(“hello world”);其中的out只是System类中的一个字段,也就是一个静态的成员变量,是一个对象的引用,即PrintStream,是标准的输出流,向标准的输出设备输出信息的,所以我们这里才调用了对象out的println()这个方法。Java中System这个类中的属性和方法都是静态的,可以通过类名可以直接调用,而且它位于java默认的包中包中,它还是一个final类型的修饰的类。所以类似与out字段的还有其他两个,如in是InputStream类的一个对象,那么in则是一个标准的输入对象,他可以读取或则也可以说从键盘或则其他输入设备接收或者读入一个信息,那么err也是PrintStream类的一个对象,则是标准的错误输出流,那其实这些所谓的标准的输入输出,他们功能实现底层是靠C语言和设备直接沟通的,java只是依赖C语言完成了这些功能。
2. String类, 字符串类,String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了(详看笔记部分解析)。如果需要对字符串做很多修改,那么应该选择使用 。