A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 毕博 中级黑马   /  2012-4-24 21:17  /  1876 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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();  */
               
        }

}

5 个回复

倒序浏览
L1.fun();改成l.fun();
回复 使用道具 举报
L1 l=new L1();   
L1.fun()//写错了,l.fun();
回复 使用道具 举报
/*
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方法。 另外这里有一个知识点:匿名对象,建议楼主去查查。
--------------------------------------------
感觉楼主还应该巩固下基础中的关键字、标识符等知识点,内部类的相关知识也在视频中有详细讲解,多看看...
回复 使用道具 举报
L1.fun()应该写成l.fun,或者把fun()方法写成静态方法
  public  static void fun()
        {
                new L2().print();
        }
回复 使用道具 举报
本帖最后由 韩新凯 于 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();
}
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马