我的内部类笔记

一、认识一般类的类,方法,变量之间的访问:
 (1) 静态的成员或方法直接用类名访问,非静态的要通过类的对象访问
 (2) 静态方法不能访问非静态成员,不能调用非静态方法
 (3) 非静态方法可以访问静态成员,可以调用静态方法
 (4) 成员变量在类体中都是可见的【建立在(1),(2)的基础上】,但private的成员变量只在该类的类体中可见
 
 (5) 非final的局部变量在方法结束后就失效,不可再访问,但final的依然存在,可以访问
 (6) 成员变量,成员方法的修饰符:
  访问控制 public default protected private
  其它:static final
 (7) 局部变量
  只能是default 或final

二、认识内部类:
   1,成员内部类
      a)  非静态成员内部类---------->相当于非静态成员 
      b)  静态成员内部类------------>相当于静态成员
     
 从访问方式分析:
     从内部类中访问外部类的变量
  a) 不爱限制 this代表内部类对象  Out.this代表外部类  (4)
  b) 不能访问非静态的成员 (2)/(4)
     从外部类中访问内部类:
   a) / b)   访问不受限制,可通过创建内部类的实例访问 (4)
     从外部类外访问内部类
  a)  创建外部类的实例,再通过该实例创建内部类实例访问 new Out().new Inner().name (1)
  b)  不用创建外部类对象,通过外部类名创建内部类实例访问  Out.new Inner().name  (1)
  ***如果内部类的成员变量是private的就不能访问了  (4)
       
   2,方法内部类--------->相当于局部变量  只能是default / final / abstract  (7)
      c)  非静态方法内部类
           可自由访问外部类的成员(3),但不能访问方法的final局部变量(5)
      e)  静态方法内部类
           不能访问外部类的非静态成员或方法(2)
 
  例子:
  public void Outer {
   
   //非静态成员
   int column1;
   //静态成员
   static String column2;
   //非静态成员内部类
   private class Inner_1 {
    
   }
   //静态成员内部类
   static class Inner_2 {
    
   }
   //非静态方法
   void method1() {
    //非静态方法内部类
    class Inner3 {
      
    } 
   }
   //静态方法
   static void method2 () {
    //静态方法内部类
    final class Inner4 {
      
    } 
   }
     
  }         
 /*
 *  注:对内部类之间的调用关键在于理解一般类之间的调用情况,在此基础上参照比较。
 */
 
 
   3,匿名内部类
      实现接口的所有方法(占绝大多数)
    接口(父类)------------------------------------->>>匿名实现类(匿名子类)
   (复写父类的方法或扩展自己的方法)
    public class Outer
 {
  public void start(){
   
   //Thread的构造函数要传入Runable实现类的对象
   //调用Thread对象start()起动一个新的线程
   new Thread(
     //匿名内部类对象
     new Runable(){
      //匿名内部类
      public void run(){
       //处理代码-------
      };
     }
   ).start();
  }
 }    
   /*
   * 创建匿名内部类与创建其对象要一起进行
   */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值