内部类


* 成员内部类的的使用格式:定义在外部类的里边,所以必须通过外部类才能找到内部类  * 外部类名.内部类名 变量名 = new 外部类名().new 内部类名();  * 内部类:定义在其他类内部的类  *   * 分类:  * 成员内部类:定义其他类的成员(类中方法外)位置的类  * 局部内部类:定义其他类的方法中的类  *   * 成员内部类的定义格式:  * 修饰符 class 外部类名{  * 修饰符 class 内部类名{  * 成员变量;  * 成员方法;  * }  * }  * 成员内部类的的使用格式:定义在外部类的里边,所以必须通过外部类才能找到内部类  * 外部类名.内部类名 变量名 = new 外部类名().new 内部类名();  *   * 我们定义内部类时,就是一个正常定义类的过程,同样包含各种修饰符、继承与实现关系等。  * 在内部类中可以直接访问外部类的所有成员。    * 一个java文件中可以定义多个类,多个是并列关系  * 但是只能有一个类使用public修饰,被public修饰的类,必须和文件名相同    * 局部内部类:定义在外部类的方法中  *   * 注意:局部变量的修饰符只能是final  *   * 定义格式:  * 修饰符 class 外部类名{  * 修饰符 返回值类名 外部类方法名(参数){  * (final)class 局部内部类名{  * 成员变量;  * 成员方法;  * }  * //创建局部内部类的方法使用  * 局部内部类名 变量名 = new 局部内部类名();  * 变量名.成员变量  * 变量名.成员方法(参数);  * }  *     * }  *   * 使用格式:和局部变量一样,作用域只在方法中有效;只能在方法中使用,出了方法不能使用  * 必须在定义完成局部内部类之后,立即创建对象使用    * 匿名内部类:没有名字,定义在其他类方法中的类  * 作用:把定义子类,重写父类的方法,创建子类对象,合成一步完成  * 把定义实现类,重写接口的抽象方法,创建实现类对象,合成一步完成  * 结果:就是一个子类对象,子类对象没有名字  *   * 格式:  * new 父类/接口(){  * 重写父类/接口中的方法;  * };  *   * new Smoking(){   @Override   public void smoke() {    System.out.println("匿名内部类,重写接口的方法!");   }     };  以上一堆代码就是一个创建子类的过程,结果就是一个子类对象,相当于new Teacher()

       



来自为知笔记(Wiz)