黑马程序员技术交流社区
标题:
匿名内部类的总结
[打印本页]
作者:
a80C51
时间:
2015-9-12 15:49
标题:
匿名内部类的总结
1,定义
匿名内部类其实是内部类的简写格式;
2,定义匿名内部类的前提
内部类必须要继承一个类或者实现接口,但最多只能继承一个父类或者实现一个接口;
3,定义格式:
new 父类或接口()
{
定义子类的内容
}
复制代码
4,匿名内部类就是一个带有内容的匿名子类对象。
5,匿名内部类使用规则:
a,匿名内部类不能是抽象类;
b,匿名内部类不能定义构造器,但可以定义初始块。
具体代码实例如下:
interface Inter
{
public abstract void method();
}
class Test
{
//知识点一、匿名内部类的使用之---补全代码
//第三步,根据得出结论,将该方法的定义写出来
public static Inter function()
{
/*
第四步,需要return一个Inter类型的对象;
而通过观察,Inter中只有一个方法method(),故可以考虑使用匿名内部类来实现
*/
return new Inter()
{
public void method()
{
System.out.println("the result is here!!!!");
}
};
}
}
public class myAnonymousInnerClass
{
public static void main(String[] args)
{
/*
第一步,通过观察代码,发现该语句直接调用Test类中的function()方法;
因此,该function()应该数据类方法。需要使用static修饰
第二步,经过该function()方法,最后又调用method()方法。只有Inter类型才能调用该方法。
因此,该function()方法应该返回一个Inter类型的对象。
故function()方法的定义格式已经出来了:public static Inter function();
*/
Test.function().method();
//知识点二、匿名内部类做为参数的使用
show(new Inter()
{
public void method()
{
System.out.println("show方法调用了一个匿名内部类!");
}
});//这里是内部类的一个易错点。此时如果成对打符号的话,则应该不会该问题。
//知识点三、如果没有接口等其他的东西,就想通过一个匿名内部类实现sayHello方法
new Object()//Object类是所有类的基类或者叫父类。
{
public void sayHello()
{
System.out.println("I am here to say hello!");
}
}.sayHello();
}
public static void show(Inter in)
{
in.method();
}
}
复制代码
作者:
插兜
时间:
2015-9-12 17:59
好厉害,很详细
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2