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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

黑马王楠

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© 黑马王楠 初级黑马   /  2012-9-3 10:01  /  1917 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马王楠 于 2012-9-3 10:23 编辑

都有什么区别,什么时候该有static

6 个回复

倒序浏览
简单的说,所谓内部类,其实就是定义在类中的类!内部类可以实现接口,当类与接口或者接口与接口发生方法命名冲突的时候,还必须用内部类来实现接口。内部类作为其外部类的一个成员,与其他成员一样,可以直接访问其外部类的数据和方法。只不过相比较外部类只有public和默认的修饰符不同,内部类作为一个成员,可以被任意修饰符修饰。
但内部累定义在局部时不能被成员修饰符修饰,也不能访问他所在局部中的变量,只能访问被final修饰的局部变量。
当内部累定义了静态成员时,这个内部累是要加static的。当外部类中的静态方法访问内部类时,内部类也是static的。
回复 使用道具 举报
外部类,内部类,匿名类,外部类就是两个类并列的
class A {
}
class B {
},

内部类:
class A {
  class B {}
},
第一:B可以直接使用包涵它的类的成员变量,内部类不能被除包涵类以外的类调用;
第二:还有就是匿名类,也是内部类 classA{new {}}省略定义类名直接定义方法和使用,这个适用于代码比较简单且这个类不需要被其他类调用

这一块说起来简单,用起来复杂,需要你自己去上网找资料
回复 使用道具 举报
内部类的访问规则:内部类可以直接访问外部类中 的成员包括私有
外部类要想访问内部类就必须建立内部类的对象
  访问格式:内部类在外部类的成员位置上,并没有被私有,如果想要在其他的外部类建立内部类的对象
  外部类名.内部类名  变量名=外部类对象.内部类对象
      Outer.Inner  i1=new Outer().new Inner();  
     内部类在外部类的成员位置上,可以被成员修饰符所修饰
     比如 private 将内部类对其他外部类进行封装
           static  内部类能被静态修饰变成静态内部类,具有静态属性
           并只能访问外部类中的静态成员了,出现了访问局限
          1: 那么在其他外部类中怎么直接访问内部静态类中的非静态成员呢呢?
            new   Out.Inner().function();
            2:那么如何在其他外部类中访问内部静态类中的静态成员呢?
              Out.Inner.function();
             如果内部内中有静态成员,那么该内部类必须定义为静态类
            当外部内中的静态成员访问内部类中的成员时,内部类必须也要定义为static


回复 使用道具 举报
内部类可以实现接口,当类与接口或者接口与接口发生方法命名冲突的时候,还必须用内部类来实现接口。

假设一个public方法不是静态的 那么你必须实例化才能访问到这个方法
  假设一个案例 电影院一个电影的票数 如果你不用静态的话 那么一个柜台实例化一个票数的变量 那么A柜台实例化默认100 卖出10张 应该还剩下90张 但是在B柜台上看 票数还是100张  如果用静态的话 那么A卖了10张 那么B刷新一下 就编程90张了  简单说如果你的多个实例需要用的同一个数据的话 那个数据最好用静态变量来保存 当然了 静态变量也不需要实例化才能访问的
回复 使用道具 举报
首先,内部类就是在一个(外部)类中再定义一个类,但是,有一点,所有使用内部类的地方都可以不用内部类同样解决问题,只是为了使程序更加简介,便于命名规范和划分层次结构,可以在类中再次定义类,即引入内部类进行对方法的封装。

其次,内部类可以理解是作为外部类的一个成员,它依附于外部类而存在的。内部类可以为静态(内部类可以有静态属性,前提是必须是静态内部类)。可以用protect和private修饰,而外部类只能用public和default修饰。

内部类又分为:成员内部类,局部内部类,静态内部类,匿名内部类。

成员内部类:作为外部类的一个成员存在,与外部类的属性、方法并列。
局部内部类:在方法中定义的内部类称为局部内部类。
静态内部类:静态内部类定义在类中 ,在任何方法之外,用 static 修饰。 静态内部类只能访问外部类的静态成员。
匿名内部类:匿名内部类就有点特殊了,通过匿名类实现。另外你们内部类是唯一一种没无构造方法的类。
回复 使用道具 举报
谢谢大家的热情解答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马