黑马程序员技术交流社区
标题:
内部类 问题
[打印本页]
作者:
毕博
时间:
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