黑马程序员技术交流社区

标题: java中方法内不能再定义方法吗?(有代码,在线等 谢谢) [打印本页]

作者: pancl    时间: 2014-7-10 12:48
标题: java中方法内不能再定义方法吗?(有代码,在线等 谢谢)
本帖最后由 pancl 于 2014-7-10 12:55 编辑

  1. class test
  2. {
  3.     public static void main(String[] args)
  4.     {
  5.          method1();
  6.     }
  7.    public static void method1()
  8.     {
  9.        int x=1;
  10.        int y=2;

  11.        method2();
  12.        public static void method2()
  13.        {
  14.                System.out.println(x+y);
  15.        }
  16.    }
  17. }
复制代码
编译会出错,“非法的表达式的开始”是因为在方法内不能在定义方法吗?如果在实际应用中,需要method1和method2并且method1中定义的很多变量都会在mehod2被使用。该如何修改代码结构呢?谢谢了


作者: 王松朝    时间: 2014-8-4 23:07
java是不允许方法内部嵌套方法的,但是有办法绕过去,方法内部可以嵌套内部类,类里面又可以嵌套方法,这样就达到了你的要求:
// 伪代码,旨在理解
class A{

     void  a(){
         new interface {
                 void b(){
                       //
                  }
        }
      
   }
}


按照变量的作用范围来说,内部类是不能访问方法内的变量的,  除非将方法内的变量声明为final的,才能访问
作者: 王松朝    时间: 2014-8-4 23:09
本帖最后由 王松朝 于 2014-8-4 23:11 编辑

按照你说的意思来看,并不需要内部类这样的东西,只需要把变量定义成  全局变量即可
like this;
class      A{
           int aa,bb,cc;
          void a(){

          }

          void b(){

          }
       ///// 或者也可以这样

        void c(){
           int a1,a2;
           d(a1,a2);
        }
        void  d(int a1,int a2){

        }

}





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