黑马程序员技术交流社区

标题: 编译没通过,自己没找到错误。帮忙看下,谢谢 [打印本页]

作者: 刘晓康    时间: 2012-4-4 14:47
标题: 编译没通过,自己没找到错误。帮忙看下,谢谢
class Outer
{
        int x =3;
        void method(final int a)
        {
                final        int y=3;
                class Inner
                {
                        void function()
                        {
                        System.out.println(a);
                        }
                }
                new Inner().function();
        }
}

class InnerClassDemo
{
        public static void main(String [] args)
        {
        Outer.out= new Outer();
        out.method(5);
        out.method(6);
        }
}
InnerClassDemo.java:26: 找不到符号
符号: 变量 out
位置: 类 Outer
        Outer.out= new Outer();
             ^
InnerClassDemo.java:27: 找不到符号
符号: 变量 out
位置: 类 InnerClassDemo
        out.method(5);
        ^
InnerClassDemo.java:28: 找不到符号
符号: 变量 out
位置: 类 InnerClassDemo
        out.method(6);
        ^
3 错误

作者: 秦岩    时间: 2012-4-4 14:52
  1. class Outer
  2. {
  3.         int x =3;
  4.         void method(final int a)
  5.         {
  6.                 final        int y=3;
  7.                 class Inner
  8.                 {
  9.                         void function()
  10.                         {
  11.                         System.out.println(a);
  12.                         }
  13.                 }
  14.                 new Inner().function();
  15.         }
  16. }

  17. class InnerClassDemo
  18. {
  19.         public static void main(String [] args)
  20.         {
  21.         Outer out= new Outer();   //这里错误, 应该这样写,而不是 Out.out = new Outer();
  22.         out.method(5);
  23.         out.method(6);
  24.         }
  25. }
复制代码

作者: 邓斌    时间: 2012-4-4 15:17
Outer.out= new Outer();   //Quter 是个类类型  定义类类型后面加“.”  
Quter.java:14: 错误: 找不到符号
                        Outer.out= new Outer();
                             ^
  符号:   变量 out
  位置: 类 Outer
1 个错误

作者: 岳民喜    时间: 2012-4-4 23:45
LZ这道题代码如此简单,应该很好看出问题的,这种问题仔细看一下,分析分析就能得出结果了,是对象定义格式错误的原因,
作者: 李震 李震 李震    时间: 2012-4-5 02:59
Outer.out= new Outer();//
Outer out= new Outer();//创建对象实例

作者: 张小庆    时间: 2012-4-5 07:35
创建对象格式错误了啊,楼主。
作者: 欧阳才志    时间: 2012-4-5 08:09
Outer.out= new Outer()
你把Outer后的点去掉,再编译一下看看,应该就过了。
对象创建也叫对象实例化,创建形式跟我们定义一个变量类似,严格遵循先创建后使用的原则。
楼主先是定义了一个Outer类,但是在实例化的时候却犯了糊涂。应该是先创建out对象,再调用它的构造方法。
所以楼主将Outer.out= new Outer()这句的点变成空格再编译应该是会通过的。

作者: 黑马老兵    时间: 2012-4-5 08:24
Outer.out= new Outer();
这一步有问题Outer.XXX是用来调用Outer内部静态的变量或者方法的。创建对象应该是 Outer out= new Outer();

作者: 姜志钦    时间: 2012-4-5 09:42
声明类的实例与声明变量的语法是一样:类名 实例名;  调用类的静态方法或属性,才用楼主你写的那样:Outer.out




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