黑马程序员技术交流社区

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

作者: 毕博    时间: 2012-4-24 21:17
标题: 内部类 问题
class L1
{
        private String str="Hello world";
        class L2{
                public void print()
                {
                        System.out.println(str);
                }
        }
        public  void fun()
        {
                new L2().print();
        }
}

public class Nei {

        public static void main(String[] args) {
/*
L1 l=new L1();     为什么这个注释里面写的是错的? ,但是下面new L1().fun();直接就可以
L1.fun();  */
               
        }

}
作者: 奥特曼爱小怪兽    时间: 2012-4-24 21:21
L1.fun();改成l.fun();
作者: Friends★    时间: 2012-4-24 21:29
L1 l=new L1();   
L1.fun()//写错了,l.fun();
作者: newlaw2013    时间: 2012-4-24 21:40
/*
L1 l=new L1();     为什么这个注释里面写的是错的? ,但是下面new L1().fun();直接就可以
L1.fun(); */
--------------------------------------------
一、L1 l=new L1();   该语句应该是想创建一个类L1的对象。  L1是一个类,= 号左边的| ,应该是一个对象引用吧?这个标识符怎么取成了这个名字?
二、L1.fun();     该语句应该是想调用fun方法。  L1 是类名,类名.方法名,类名直接调用方法,调用的方法必须是静态的,即:fun() 方法写成:
public  static void fun(){}。   然后可以L1.fun();
三、new L1().fun(); 这个调用fun方法,和上面的L1.fun()调用fun方法不同,这里是对象调用方法,new L1()相当于创建了一个对象,所以可以调用fun方法。 另外这里有一个知识点:匿名对象,建议楼主去查查。
--------------------------------------------
感觉楼主还应该巩固下基础中的关键字、标识符等知识点,内部类的相关知识也在视频中有详细讲解,多看看...

作者: 光sail    时间: 2012-4-24 21:42
L1.fun()应该写成l.fun,或者把fun()方法写成静态方法
  public  static void fun()
        {
                new L2().print();
        }

作者: 韩新凯    时间: 2012-4-24 22:29
本帖最后由 韩新凯 于 2012-4-24 22:33 编辑

L1.fun();  改成l.fun();
这样写也是对的: L1.L2 ll = new L1().new L2();
  ll.print();
还可以这么做,用static:class L1 {
private static String str = "Hello world";
static class L2 {
  public static void print() {
   System.out.println(str);
  }
}
}
public class Nei {
public static void main(String[] args) {
  L1.L2.print();
}
}





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