黑马程序员技术交流社区

标题: 内部类定义在外部类的方法中使用成员变量为 [打印本页]

作者: 赵亚威    时间: 2013-3-18 11:57
标题: 内部类定义在外部类的方法中使用成员变量为
本帖最后由 赵亚威 于 2013-3-18 19:59 编辑

class Outer{
         int x=8;
        public void show(){
                  int z=5;
                class Inner {

                        
                        void function() {
                                // TODO Auto-generated method stub
                                System.out.println("z="+z);
                        }
                        
                }
                new Inner().function();
         }
}
为什么使用final 原理是?
作者: 宋耀冬    时间: 2013-3-18 12:04
final修饰符
  在Java声明类、属性和方法时,可以使用关键字final来修饰,final所标记的成分具有终态的特征,表示最终的意思。
  final的具体规则
    ·final标记的类不能被继承
    ·final标记的方法不能被子类重写
    ·final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次
    ·final标记的成员变量必须在声明的同时赋值,如果在声明的时候没有赋值,那么只有一次赋值的机会,而且只能在构造方法中显式赋值,然后才能使用
    ·final标记的局部变量可以只声明不赋值,然后再进行一次性的赋值
    ·final一般用于标记那些通用性的功能、实现方式或取值不能随意被改变的成分,以避免被误用
  如果将引用类型(即,任何类的类型)的变量标记为final,那么,该变量不能指向任何其它对象,但可以改变对象的内容,因为只有引用本身是final的。
内部类
  在一个类(或方法、语句块)的内部定义另一个类,后者称为内部类,有时也称为嵌套类。
  内部类的特点
    ·内部类可以体现逻辑上的从属关系,同时对于其它类可以控制内部类对外不可见等
    ·外部类的成员变量作用域是整个外部类,包括内部类,但外部类不能访问内部类的private成员
    ·逻辑上相关的类可以在一起,可以有效地实现信息隐藏
    ·内部类可以直接访问外部类的成员,可以用此实现多继承
    ·编译后,内部类也被编译为单独的类,名称为outclass$inclass的形式
例:
public class Outer{
private int size;
public class Inner{
  private int counter = 10;
  public void doStuff(){
   size++;
  }
}
public static void main(String [] args){
  Outer outer = new Outer();
  Inner inner = outer.new Inner();
  inner.doStuff();
  System.out.println(outer.size);
  System.out.println(inner.counter);
}
}
作者: 陈丽莉    时间: 2013-3-18 14:35
若还有问题,请继续追问,没有的话,请将帖子分类改成【已解决】~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2