A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© forver 初级黑马   /  2014-4-18 00:00  /  545 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java中 内部内 格式问题  和常见的问题 谁可以给我一个详细的解释

2 个回复

倒序浏览
×××××格式问题
    内部类是非静态的,内部类的方法也是非静态的
    建立外部类对象,建立内部类对象
    外部类名.内部类名  变量 = new 外部类对象.new内部类对象

Outer.Insider in = new Outer().new Insider();
    内部类是静态的,内部类的方法也是静态的
    类名直接调用
  外部类名.内部类名.内部类方法();
  
  Outer.Insider.show()
  Outer.Insider  in = new Outer. Insider(); --- 可以

    内部类是静态的,内部类的方法是非静态的
  外部类名.内部类名  变量 =  new 外部类.内部类对象()
  Outer.Insider  in = new Outer. Insider(); --- 可以
  
/***
*内部类的探讨
  一  内部类 单独在一处
*        1:定义外部类 persion
*        2:定义内部类 computer
*                 探讨 1:两两者之间是否可以进行数据交换
*                  外部类不可以用 类名 或者 对象 访问内部类的  态成员 与方法  无论是静态与非静态
*                  内部类 可以访问外部类的成员变量 包括 私有 和 静态
*                 内部类不可以访问外部的 方法
*                 要访问你内部成员 必须创建 对象  Persion.Computer com = new Persion().new Computer(); 用com 去访问
*         内部内可以实现接口
二   内部类 用static 修饰  并且 方法也是静态的
Persion.Computer.print();
定义对象
Persion.Computer com = new Persion.Computer();
探讨 1:两两者之间是否可以进行数据交换
*                  外部类不可以用 类名 或者 对象 访问内部类的  态成员 与方法  无论是静态与非静态
*                  内部类 可以访问外部类的成员变量 包括private 但是内部成员变量 必须用 static 修饰
*                 内部类不可以访问外部的 方法   外部方法只可用外部对象调用
*
三  · 局部 内部类
*  就是类在外部类的方法中
*  1 数据访问 与方法调用
*   外部类不可以用 类名 或者 对象 访问内部类的  态成员 与方法  无论是静态与非静态  访问不到
*                  内部类 可以访问外部类的成员变量  无论是私有的还是静态的  但是要访问方法中 的 成员变量 必须 加上final修饰
*                 Persion p = new Persion();
*                 System.out.println( new Computer().cpu );
*                 new Computer().print();
*                 p.open();  格式可以访问局部内当中的方法 和变量
*   解析
*  open方法,中有变量x,如果open方法,执行完毕,出栈,变量x就死亡了

   ·可以print是另外一个类的
    new Computer().print(); 此时变量x已经死亡,print方法,访问不到x

  · 解决办法是将 x 变量,变成了最终的修饰, x已经是一个常量

   ·因此在编译的时候,变量的值已经是定死的了,编译的时候,JVM直接将你show方法的x,变成3了

*                 内部类不可以访问外部的 方法
*  

*/
3 匿名内部类

    接口或者父类引用 变量 = new 接口或者是父类(){
      重写抽象方法
   
    };
  变量.方法()
          匿名内部类的前提
          必须有继承或者是实现
         
           和局部内部类 用法相同
           相当于
             ABC a = new ABC() 然后用a 去调用内部类中大方法
  
内部类。
特点:
        内部类可以直接访问外部类中的成员。
        外部类要访问内部类中的成员必须创建内部类的对象。


为什么要定义内部类呢?
类是用于描述事物的,而事物中如果还有具体的事物,而且这个内部的事物在访问着所属事物中的内容。
这时这个内部的事物,也需要用到类来描述。这个类就是内部类。


为什么内部类可以直接访问外部类中的成员呢?
因为内部类都持有一个外部类的引用。 外部类名.this  



*//*
内部类的修饰符。
当内部类定义在外部类的成员位置上时,
可以使用成员的修饰符来进行内部类的修饰,

1,权限修饰符。
        默认或者公有
        可以直接这样访问内部类。
        外部类名.内部类名 变量名 = new 外部类对象.new 内部类对象;

        私有:是不可以直接在外部访问。

2,static修饰符。
        内部类被静态修饰,出现访问局限性,只能访问外部类中的静态成员。
        内部类被静态后,会随着外部类的加载而加载。

        如果内部类中定义了静态成员,该内部类必须被静态修饰。

        //访问静态内部类中的非静态成员。 直接创建内部类对象。
        外部类名.内部类名 变量名 = new 外部类名.内部类名();

        //访问静态内部类中的静态成员。 不需要对象。
        外部类名.内部类名.内部类的静态成员


记住:内部类只有定义在外部类的成员 位置上,才具备这些修饰符。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
要是还没懂的话,到这个网站看这篇博客http://blog.csdn.net/u013757555/article/details/20386505
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马