`
bingzhen66
  • 浏览: 37024 次
文章分类
社区版块
存档分类
最新评论

26.黑马程序员-内部类

 
阅读更多

------- android培训java培训、期待与您交流! ----------

1.概念
  • 将一个类定义在另一个类的里卖弄,对里面那个类被称为内部类(内置累、嵌套类)。
2.定义
    • class Outer
    • {
      • 成员变量
      • class Inner
      • {
        • //内部类也可以定义成员变量、成员函数
        • //内部类可以直接访问外部类的成员(包括私有),而不用创建外部类对象。
        • void function()
        • {
          • Sop("inner");
        • }
      • }
      • void method()
      • {
        • inner in = new Inner();//创建inner对象
        • in.function();//调用内部类方法。
      • }
    • }
3.使用方法
  • 外部类访问内部类:创建内部类的对象,调用内部类的方法。
  • 而内部类不需要创建外部类的对象,就可以直接使用外部类的成员(包括私有)。原因是内部类持有一个外部类的引用,这个引用的格式是:外部类.this。
  • 在其他地方使用内部类时,需要加上外部类名,格式是:Outer.Inner in = new Outer().new Inner; 这种格式很少使用。一般情况是:内部类作为成员被私有修饰,不允许其他类直接访问
4.访问规则
  • 内部类定义在另一个类(外部类)里面,可以定义自己的成员变量、成员函数。
  • 内部类也可以定义成员变量、成员函数
  • 内部类可以直接访问外部类的成员(包括私有),而不用创建外部类对象。
5.访问规则2
  • 当内部类在成员位置上,就可以被成员修饰符所修饰。
    • 比如,
      • private:将内部类在外部类中进行封装。
      • static:内部类就具备static的特性。
    • 当内部类被static修饰后,只能直接访问外部类中的static成员,出现了访问局限。
    • 在外部其他类中,如何直接访问static内部类的非静态成员呢?
      • new Outer . Inner().function();//新对象 外部类名.内部类().方法
    • 在外部其他类中,如何直接访问static内部类的静态成员呢?
      • Outer.Inner.function(); //外部类名.内部类名.方法
    • 注意:
      • 当内部类中定义了静态成员,该内部类必须是static的。这个是内部类的一个特点。
      • 当外部类中的静态方法访问内部类时,内部类也必须是静态的。
6.内部类什么时候使用?
  • 当类用来描述事物时,该事物中还有事物,该事物用内部类来描述,因为内部事务在使用外部事物的内容。举例:描述人体class body,人体由心脏等组成,心脏的描述成员太多,并且心脏访问人体里的其他数据,需要封装成一个类,心脏heart就是一个内部类。心脏不需要对外暴露,所以private。body 可以提供一个方法使外部访问,当然需要一些条件,不能随便访问心脏吧^_^。










分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics