黑马程序员技术交流社区

标题: 访问局部变量 [打印本页]

作者: 史卜坤    时间: 2012-7-9 10:28
标题: 访问局部变量
  • class Outer
  • {
  •         int x=3;
  •         void method()
  •         {
  •                 final int y=4//为什么?原因,
  •                 class Inner//内部类处于局部中。不能被成员修饰符修饰
  •                 {
  •                         void function()
  •                         {
  •                                 System.out.println(y);//内部类访问局部变量需要最终
  •                         }
  •                 }
  •         }
  • }
  • class InnerDemo4
  • {
  •         public static void main(String [] args)
  •         {
  •                 new Outer().method();
  •         }
  • }


复制代码


作者: 曹恒业    时间: 2012-7-9 10:50
恕我愚钝,楼主的问题不是很明白。希望问题详细点,方便大家思考。
作者: 高原    时间: 2012-7-9 11:03
本帖最后由 高原 于 2012-7-9 11:04 编辑



作者: 山水游客    时间: 2012-7-9 17:16
根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。
final类不能被继承,没有子类,final类中的方法默认是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final不能用于修饰构造方法。
注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。

作者: 贾存双    时间: 2012-7-9 18:49
本帖最后由 贾存双 于 2012-7-9 19:00 编辑

class OutTer{
        private String str = "hello" ;  //定义属性
        public void fun (final int temp){                //定义方法
                class InNer{                //在方法中定义内部变量
                        public void prin(){                        //定义内部类方法
                                System.out.println("访问外部类中的属性:"+str) ;
                                System.out.println("外部类方法的参数:"+temp) ;
                        }
                }
                        new InNer().prin() ;
        }
}
public class InnerDemo6{
        public static void main(String args[]){
                new OutTer().fun(30) ;        //实例化
        }
}



注意:在方法中定义的内部类,只能实例化外部类的方法,而不能实例化方法中的内部类对象。




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