黑马程序员技术交流社区

标题: 一个内部类的问题 [打印本页]

作者: 夏凡    时间: 2013-3-28 07:42
标题: 一个内部类的问题
本帖最后由 夏凡 于 2013-3-28 07:50 编辑

程序第九行 int x = 3; 前面加 private为什么会报错”非法的表达式“?
  1. class Outer
  2. {
  3.         private int x = 1;
  4.         class Inner
  5.         {
  6.                 private int x = 2;
  7.                 private void founc()
  8.                 {
  9.                         int x = 3;                        //此处为什么加private会报错"非法的表达式"

  10.                         System.out.println("founc_x = "+x);                        //由内而外分别输出x
  11.                         System.out.println("inner_x = "+this.x);
  12.                         System.out.println("outer_x = "+Outer.this.x);
  13.                 }
  14.         }
  15.         void method()
  16.         {
  17.                 Inner in = new Inner();
  18.                 in.founc();
  19.         }
  20. }

  21. public class InnerClass
  22. {
  23.         public static void main(String[] args)
  24.         {
  25.                 Outer out = new Outer();
  26.                 out.method();
  27.         }
  28. }
复制代码

作者: 随风而去    时间: 2013-3-28 07:48
int x = 3;         //此处为什么加private会报错"非法的表达式"

- -! 方法里面能够声明私有属性么??
只有类里面才可以设置访问权限 方法的作用域属于局部作用域 ,肯定不能设置私有访问权限
作者: 谭辉    时间: 2013-3-28 08:03
成员变量或者成员函数才能声明为private,当然内部类也可以声明为private
int x = 3;在函数体内,是局部变量,不能声明为private
作者: 丘凤光    时间: 2013-3-28 08:15
类的成员可以用private、public等权限关键字修饰,函数的变量不可以用权限关键字修饰。
作者: 我手心里的宝    时间: 2013-3-28 08:55
private public 为类成员变量修饰符,不可以修饰局部变量
修饰成员修饰符:private public protected 默认
类成员修饰符:public 默认 内部类的话可以用成员的修饰符
作者: 董延京    时间: 2013-3-28 10:14
public,priveta,protected,以及默认是用来修饰类中的成员变量的吧,方法中的变量是局部变量,没这些修饰符的。
作者: 赵喜平    时间: 2013-3-28 10:21
static,public,protected,private是成员变量修饰符,
楼主现在是在试图用成员变量修饰符修饰局部变量,是语法错误
作者: HM谢文辉    时间: 2013-3-28 11:27
成员变量在方法结束后就释放了,定义成private也没用。
作者: tshch1989    时间: 2013-3-28 12:37
int x=3 中x是局部变量,不能用成员修饰符private修饰,java语法中就这么规定的,没有为什么哦!
作者: 陆旭东    时间: 2013-3-28 13:35
修饰符可以用于修饰类的成员变量,但是方法中的变量就不用修饰符修饰了。




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