内部类

* 成员内部类的的使用格式:定义在外部类的里边,所以必须通过外部类才能找到内部类
 * 外部类名.内部类名 变量名 = 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_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">





posted @ 2018-08-20 23:11  JokerZM  阅读(3974)  评论(0编辑  收藏  举报