什么是匿名内部类什么时侯用
Anonymous inner class
马克-to-win:有时如此简单,都没有必要清清楚楚明确出类名,用一下就完,就用匿名内部类。注意: 下面的new FigureMark_to_win(){。。。。};的语法形式。它和以往的new FigureMark_to_win()不同,现在的这个new的是FigureMark_to_win的子类(否则“我啥也不是”, 应该被打印出来。)。
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。
例2.7_0:
class FigureMark_to_win {
void whoAmI(){
System.out.println("我啥也不是");
}
}
class Triangle extends FigureMark_to_win {
void whoAmI() {
System.out.println("三角形!");
}
}
public class Test {
public static void main(String[] args) {
Triangle d = new Triangle();
d.whoAmI();
new Triangle().whoAmI();//连指针都省了
/* 马克-to-win:下面这句程序,都没有像上面一样提出一个Triangle类的概念,主要是如此简单,都没有必要清清楚楚明确出类名,所以就直接 new FigureMark_to_win(){。。。。}; ,马克-to-win: 大家注意一下格式和分号。 even though the next statemnt new a abstract class which is not
allowed, it implement the method of whoAmI, so it is not the real abstract class instantiation.
*/
FigureMark_to_win a = new FigureMark_to_win() {
void whoAmI() {
System.out.println("长方形!");
}
};
a.whoAmI();
new FigureMark_to_win() {
void whoAmI() {
System.out.println("圆形");
}
}.whoAmI();//连指针都省了
}
}
结果:
三角形!
三角形!
长方形!
圆形
匿名内部类的父类也可以是抽象类或接口。以下给出例子:
什么是匿名内部类什么时侯用
Anonymous inner class
马克-to-win:有时如此简单,都没有必要清清楚楚明确出类名,用一下就完,就用匿名内部类。注意: 下面的new FigureMark_to_win(){。。。。};的语法形式。它和以往的new FigureMark_to_win()不同,现在的这个new的是FigureMark_to_win的子类(否则“我啥也不是”, 应该被打印出来。)。
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。
例2.7_0:
class FigureMark_to_win {
void whoAmI(){
System.out.println("我啥也不是");
}
}
class Triangle extends FigureMark_to_win {
void whoAmI() {
System.out.println("三角形!");
}
}
public class Test {
public static void main(String[] args) {
Triangle d = new Triangle();
d.whoAmI();
new Triangle().whoAmI();//连指针都省了
/* 马克-to-win:下面这句程序,都没有像上面一样提出一个Triangle类的概念,主要是如此简单,都没有必要清清楚楚明确出类名,所以就直接 new FigureMark_to_win(){。。。。}; ,马克-to-win: 大家注意一下格式和分号。 even though the next statemnt new a abstract class which is not
allowed, it implement the method of whoAmI, so it is not the real abstract class instantiation.
*/
FigureMark_to_win a = new FigureMark_to_win() {
void whoAmI() {
System.out.println("长方形!");
}
};
a.whoAmI();
new FigureMark_to_win() {
void whoAmI() {
System.out.println("圆形");
}
}.whoAmI();//连指针都省了
}
}
结果:
三角形!
三角形!
长方形!
圆形
匿名内部类的父类也可以是抽象类或接口。以下给出例子:
例2.7---本章源码
abstract class FigureMark_to_win {
abstract void whoAmI();
}
class Triangle extends FigureMark_to_win {
void whoAmI() {
System.out.println("三角形!");
}
}
public class Test {
public static void main(String[] args) {
Triangle d = new Triangle();
d.whoAmI();
new Triangle().whoAmI();//连指针都省了
/* 马克-to-win:下面这句程序,都没有像上面一样提出一个Triangle类的概念,主要是如此简单,都没有必要清清楚楚明确出类名,所以就直接 new FigureMark_to_win(){。。。。},马克-to-win: 大家注意一下格式和分号。 even though the next statemnt new a abstract class which is not
allowed, it implement the method of whoAmI, so it is not the real abstract class instantiation.
*/
FigureMark_to_win a = new FigureMark_to_win() {
void whoAmI() {
System.out.println("长方形!");
}
};
a.whoAmI();
new FigureMark_to_win() {
void whoAmI() {
System.out.println("圆形");
}
}.whoAmI();//连指针都省了
}
}
result is:
三角形!
三角形!
长方形!
圆形
例2.7---本章源码
abstract class FigureMark_to_win {
abstract void whoAmI();
}
class Triangle extends FigureMark_to_win {
void whoAmI() {
System.out.println("三角形!");
}
}
public class Test {
public static void main(String[] args) {
Triangle d = new Triangle();
d.whoAmI();
new Triangle().whoAmI();//连指针都省了
/* 马克-to-win:下面这句程序,都没有像上面一样提出一个Triangle类的概念,主要是如此简单,都没有必要清清楚楚明确出类名,所以就直接 new FigureMark_to_win(){。。。。},马克-to-win: 大家注意一下格式和分号。 even though the next statemnt new a abstract class which is not
allowed, it implement the method of whoAmI, so it is not the real abstract class instantiation.
*/
FigureMark_to_win a = new FigureMark_to_win() {
void whoAmI() {
System.out.println("长方形!");
}
};
a.whoAmI();
new FigureMark_to_win() {
void whoAmI() {
System.out.println("圆形");
}
}.whoAmI();//连指针都省了
}
}
result is:
三角形!
三角形!
长方形!
圆形