黑马程序员技术交流社区
标题:
[关于匿名内部类]匿名内部类究竟是什么?
[打印本页]
作者:
可以假装看不见
时间:
2016-5-23 22:38
标题:
[关于匿名内部类]匿名内部类究竟是什么?
匿名(无名)内部类:
1.匿名内部类其实就是内部类的简写格式
2.匿名内部类前提:
内部类必须继承一个类或实现接口
3.匿名内部类格式:
new 父类或者接口(){定义子类的内容}
4.其实匿名内部类就是一个匿名子类对象
(带内容的对象)
5.匿名内部类中定义的方法最好<3个(超出3个代码将变得冗长)
abstract class AbsDemo//抽象类
{
abstract void show();
}
class Outer
{
int x=5;
/*
①
class Inner extends AbsDemo
{
void show()
{
System.out.println("show:"+x);
}
}
*/
public void function()
{
//② new Inner().show();
//把① ②注释简写为:
new AbsDemo()//匿名对象
{
void show()
{
System.out.println("x="+x);
}
}.show();
//以上是一个对象,是AbsDemo子类的对象
//通过匿名对象调用子类特有方法
new AbsDemo()
{
void show()
{
System.out.println("x="+x);
}
void son()//子类特有方法
{
System.out.println("son");
}
}.son();
//通过父类的引用来调用
AbsDemo ab= new AbsDemo()//多态 父类引用指向子类对象
{
void show()
{
System.out.println("x="+x);
}
void son()
{
System.out.println("son");
}
};
ab.show();
//ab.son();//编译失败,父类中无son()
//并且无法通过向下转型来调用son();
} //因为子类没名字!
}
class AnonyInnerDemo
{
public static void main(String[] args)
{
new Outer().function();
}
}
复制代码
输出 :
x = 5
son
x = 5
作者:
可以假装看不见
时间:
2016-5-23 22:49
有问题请大家指出
作者:
Deleba
时间:
2016-5-23 22:49
我来学习学习
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2