在前面学习了内部类之后,在内部类中也有匿名内部类,所谓匿名内部类由于没有名字,所以它没有构造函数(但是如果这个匿名内部类继承了一个只含有带参数构造函数的父类,创建它的时候必须带上这些参数,并在实现的过程中使用super关键字调用相应的内容)。下面通过毕老师视频中讲解的一个匿名内部类实例来对知识点的巩固和学习,希望大家能提些建议。
练习:创建一个匿名内部类
1,只在主函数中提示了:Test.function().method();
2,完成需要补齐的代码。
根据主函数中给出的提示代码:Test.function().method();分析思路:
1,当看到Test后面的.的时候,想到这个类中,肯定有静态成员,而且这个成员名字就是function,通过function,后面的括号得知它是一个函数:function()。
2,Test.funtion()这个叫调用一个函数,funtion()运算完了后,后面跟了个点还调用method方法。
3,function()运算完了后的结果是一个对象,只有返回来的是对象,才能访问method()方法,method方法一定要被对象调用。
4,什么对象能够调用method方法,必然是Inter,返回值类型是Inter,只有Inter类型的对象才能调用method方法。可是Inter是不能创建对象的,只有子类调用才可以。
/*
interface Inter
{
void method();
}
class Test
{
//补齐代码。通过匿名内部类。
}
class
{
public static void main(String[] args)
{
Test.function().method();
}
}
*/
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -
正解代码如下:
interface Inter
{
void method();
}
class Test
{
//补齐代码。通过匿名内部类。
/*注释内容为正常通过内部类实现功能
static class Inter implements Inter
{
public void method()
{
System.out.println("method run");
}
}
*/
static Inter function()
{
//作为匿名类后就没有名字了,
//所以需要用Inner的父类或者接口的名字代替。
//接口不能new对象,因为它里面有抽象方法。
//return new Inner(){} //Inner是Inter的子类。
return new Inter()
{
public void method()
{
System.out.println("method run");
}
};
}
}
class NiMingNeiBuLeiTest
{
public static void main(String[] args)
{
Test.function().method();//根据提示的此代码写匿名内部类
}
}
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。