黑马程序员技术交流社区
标题:
匿名内部类中的一个问题。。。
[打印本页]
作者:
黑马任雪刚
时间:
2012-6-29 12:22
标题:
匿名内部类中的一个问题。。。
//匿名内部类的一个小练习。
abstract class Chouxiang
{
abstract void method();
}
class Outer
{
static class Inner extends Chouxiang//
{
public void method()
{
System.out.println("run");
}
}
public static Chouxiang show()
{
return new Inner();//为什么上面内部类要用static修饰,而下面的匿名内部类却没有用到static呢????????????
// return new Chouxiang()
// {
// public void method()
// {
// System.out.println("method run");
// }
// };
}
}
public class Nimingneibulei
{
public static void main(String[] args)
{
Outer.show().method();
}
}
作者:
陆强强
时间:
2012-6-29 12:42
因为你的show()方法是静态,所以要访问的成员内部类只能是静态,而下面的内部类在方法里面不能用static修饰
作者:
陈淑飞
时间:
2012-6-29 13:03
楼主自己也说一,上面是内部类 下面是匿名内部类。
那
首先要明白这两个者的应用场景及为什么用它
,你就会明白了。
一、匿名内部类
它使得 代码 简洁 美观 易懂
如一般 事件处理的匿名适配器 类 ,都是用匿名内部类。 它也一般用在变量不需要引用它,用在实参做个参数传递给一个方法处理,或一方法体返回一匿名内部类。 另外 它的 格式一般是 new xxx(){} 它连名称都没有,还能用static来修改吗?
二、内部类
1 、 它能很好的实际隐藏,可以用protect 甚至是private 来修改它。 而一般的类,要是被private 那就没意义了。
2. 可以拥有外部类的所有元素访问权限。
3. 可以用在多重继承上。 比如 一个类,想实现一接口的 run()方法,又想继承一类的 run()方法,此时内部类,将是个很好的选择。
作者:
陌花╮有意、
时间:
2012-6-29 13:27
因为show()方法时静态,那么他所调用的内部内就必须静态
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2