黑马程序员技术交流社区

标题: 内部类 [打印本页]

作者: 朱烈葵    时间: 2012-8-5 10:55
标题: 内部类
class StaticClass
{
public static void main(String[] args)
{
  String name = new StaticClass().new InnerTest("aaa").getName();
  System.out.println(name);
  class InnerTest
  {
   private String name;
   InnerTest(String name)
   {
    this.name=name;
   }
   public String getName()
   {
    return name;
   }
  }
}
}
怎么才能访问内部类的那个方法呢?

QQ截图20120805105412.jpg (12.71 KB, 下载次数: 39)

QQ截图20120805105412.jpg

作者: 王渠    时间: 2012-8-5 11:02
  1. public class StaticClass {
  2.         public static void main(String[] args) {
  3.                 class InnerTest {
  4.                         private String name;

  5.                         InnerTest(String name) {
  6.                                 this.name = name;
  7.                         }

  8.                         public String getName() {
  9.                                 return name;
  10.                         }
  11.                 }
  12.                 String name = new InnerTest("aaa").getName();
  13.                 System.out.println(name);
  14.         }
  15. }
复制代码
这样子就可以了,你使用方法的时候,你的类都还没有定义,语句是找不到类的,等你的类加载了后,就能找到了,就能使用方法了
作者: 黑马__李龙    时间: 2012-8-5 11:05
class StaticClass {
        public static void main(String[] args) {
                String name = new StaticClass().new InnerTest("aaa").getName();
                System.out.println(name);
               
        }
        class InnerTest {
                private String name;

                InnerTest(String name) {
                        this.name = name;
                }

                public String getName() {
                        return name;
                }
        }
}
这样可以么?为什么非要在main方法里声明内部类呢?
作者: 黑马振鹏    时间: 2012-8-5 11:20
String name = new StaticClass().new InnerTest("aaa").getName();
  System.out.println(name);
这个我有点奇怪,楼主为什么会有这种想法?都是在main方法中,应该可以直接new InnerTest().为什么想着要加上new staticClass()呢?

作者: 朱烈葵    时间: 2012-8-5 11:39
王渠 发表于 2012-8-5 11:02
这样子就可以了,你使用方法的时候,你的类都还没有定义,语句是找不到类的,等你的类加载了后,就能找到了 ...

是哦,应该是
作者: 朱烈葵    时间: 2012-8-5 11:39
李龙276596456 发表于 2012-8-5 11:05
class StaticClass {
        public static void main(String[] args) {
                String name = new StaticClass().new  ...

不可以,我错了
作者: 朱烈葵    时间: 2012-8-5 11:40
黑马振鹏 发表于 2012-8-5 11:20
String name = new StaticClass().new InnerTest("aaa").getName();
  System.out.println(name);
这个我有 ...

实验下·····
作者: 黑马__李龙    时间: 2012-8-5 11:41
朱烈葵 发表于 2012-8-5 11:39
不可以,我错了

什么不可以?
作者: 朱烈葵    时间: 2012-8-5 11:46
李龙276596456 发表于 2012-8-5 11:41
什么不可以?

这样式不可以的,因为内部类还没加载进来,明白了,谢谢
作者: 朱烈葵    时间: 2012-8-5 11:46
问题已解决!
作者: 黑马__李龙    时间: 2012-8-5 11:48
朱烈葵 发表于 2012-8-5 11:46
这样式不可以的,因为内部类还没加载进来,明白了,谢谢

你把我写的代码直接粘过去,可以的,我都试验过的
作者: 刘润辰    时间: 2012-8-5 11:52
你的内部类怎么在方法中定义?好奇怪哦
作者: 朱烈葵    时间: 2012-8-5 12:14
李龙276596456 发表于 2012-8-5 11:48
你把我写的代码直接粘过去,可以的,我都试验过的

你复制错了  你复制应该是二楼的
作者: 朱烈葵    时间: 2012-8-5 12:15
刘润辰 发表于 2012-8-5 11:52
你的内部类怎么在方法中定义?好奇怪哦

实验呢····




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