------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
匿名内部类
匿名内部类就是在类的内部创建一个匿名类,这样的类叫做匿名内部类
匿名内部类必须继承一个类或者实现一个接口
匿名内部类就是在类的内部创建一个匿名类,这样的类叫做匿名内部类
匿名内部类必须继承一个类或者实现一个接口
class outer //外部类
{
/* 下面类成员函数show中创建的匿名内部类与此处声明的内部类作用一致,都是继承自demo类,并复写了该类中的方法
{
/* 下面类成员函数show中创建的匿名内部类与此处声明的内部类作用一致,都是继承自demo类,并复写了该类中的方法
匿名内部类是通过外部类outer的一个方法来调用该内部匿名类的方法,
并且每次调用完以后,都会释放该匿名内部类对象;
而内部类一旦创建对象以后可以一直保存其作用周期,直到该对象上下文执行完毕被释放。
class inner extends demo
{
void fun(){
System.out.println("匿名内部类");
}
}
*/
class inner extends demo
{
void fun(){
System.out.println("匿名内部类");
}
}
*/
void show(){
// 该匿名内部类还可以用父类引用的方式创建对象,但是创建出来的对象是父类引用对象,
// 该引用对象复写函数之后,因为是多态,所以只能调用父类中定义过的方法。
// 一般来讲是这种方式是没有什么意思的,所以这种方法有弊端
// 1,代码臃肿 2不易阅读 3 只能调用父类对象定义过的方法
new demo(){ // demo d = new demo(){
//
void fun(){ // void fun(){
//
System.out.println("匿名内部类");// System.out.println("匿名内部类");
} // }
}.fun(); // };
} // d.fun();
}
// 该匿名内部类还可以用父类引用的方式创建对象,但是创建出来的对象是父类引用对象,
// 该引用对象复写函数之后,因为是多态,所以只能调用父类中定义过的方法。
// 一般来讲是这种方式是没有什么意思的,所以这种方法有弊端
// 1,代码臃肿 2不易阅读 3 只能调用父类对象定义过的方法
new demo(){ // demo d = new demo(){
//
void fun(){ // void fun(){
//
System.out.println("匿名内部类");// System.out.println("匿名内部类");
} // }
}.fun(); // };
} // d.fun();
}
abstract demo
{
void fun(){
System.out.println("外部抽象类");
}
}
{
void fun(){
System.out.println("外部抽象类");
}
}