Java笔记6–内嵌类

2016年1月20日

14:58

6    java中的几种典型类:

   6.1   java静态类:

            特性:静态类不能实例化(静态类在运行时静态的加载到内存中,不需要初始化,没有实例,不能用this),类的成员都要是静态成员和静态方法。

                      静态方法不需要实例调用,类名.方法名(静态方法存在的意义就是为该程序中的其他类提供一些工具,为了方便使用)

                      静态变量是存在了常量池中。

                      静态代码块是在一个类第一次装载时运行,且只运行一次。

                      静态内部类:通常普通类是不允许用static修饰的,只有一个内部类才可以,静态内部类不需要实例化一个外部类,只要通过  外部类.内部类   引用就行了

   6.2   java匿名类:

             应用场景:当我们想要一个对象但却不值得为它而创建一个全新的对象(所需要的类过于简单,或者是我们只是要在一个方法内部使用)

                              通常在开启多线程和Swing应用程序中创建快速时间处理程序

                              把匿名类作为一个方法的返回值,返回一个接口的实现类对象,只是这个实现类没有名字。

   6.3   java内部类:

                定义:在一个类里面声明另一个类。

                特性:可以使用包含它的类的静态和实例成员变量,也可以使用它所在的方法的局部变量。

                           可以定义为abstract  可以声明为private或protected

                           若被声明为了static,就变成顶层类,不能再使用局部变量了

                           若想在Inner Class中声明任何的static成员,则这个InnerClass必须声明为static。

                           在创建非静态的内部类对象时,哟啊先创建相应的外部类对象,因为它有指向外部类对象的引用(当外部内和内部类的变量名重复时,其实这时有两个this指针,外部类.this.外部变量名)

                使用实例:    首先我们要有一个接口(外部的,正常的)

                                      我们在一个类中想要获得这个接口实现类的对象,就可以写一个方法getXXX();这个方法的返回值为该接口,在这个方法中写一个局部内部类,最后方法返回时创建一个局部内部类的对象。这时我们在外部调用这个方法时就可以得到接口的实现类的对象了,而且我们不会看到实现类的名字,这样就完成了封装。(注意局部内部类不能用private、protected和public修饰,因为这时我们只是要在该局部代码块可见,不需要对外部开放可视权限)

   6.4   java异常类:

                概念:java把异常当做对象来处理,并定义了一个基类java.lang.Throwable作为所有异常的超类。它有两个子类Error和Exception,分别表示错误和异常。

                          Error 是程序无法处理的错误,如:outofmemoryError、threaddeath等

                          Exception分为:RuntimeException    常见的NullPointerException、IndexOutOfBoundsException

                                                     非运行时异常:只那些不处理程序就没有办法编译通过  常见的IOException、SQLException,以及用户自定义异常。

 

已使用 Microsoft OneNote 2016 创建。