赞
踩
匿名内部类:
内部类的简化写法
前提:
存在一个接口或者类,这里的类可以是一个具体的类或者抽象类
格式:
new 类名或者接口名{
重写方法;
}
匿名内部类的本质:是一个继承了该类或者实现该接口的子类匿名对象
例:
- interface Inter{
- public abstract void show();
- public abstract void show2();
- }
- class Outer {
- public void method() {
- Inter i = new Inter(){
- public void show() {
- System.out.println("show");
- }
- public void show2() {
- System.out.println("show2");
- }
- };//!!!注意这里有个分号,因为这里定义一个对象了
- i.show();
- i.show2();
- }
- }
- public class test{
- public static void main(String[] args){
- Outer o = new Outer();
- o.method();
- }
- }
面试题:
- //按照要求,补齐代码
- //要求:输出“HelloWorld”
- interface Inter{void show();}
- class Outer {}
- public class test{
- public static void main(String[] args){
- Outer.method().show();
- }
- }
分析:
首先看main函数:Outer.method().show(),这是链式编程,那么从Outer.method()这里可以看出这里返回的是一个对象,且method()应该是Outer中的一个静态方法。又由于接口Inter中有show()方法,所以method()方法返回的类型是一个接口。
答案:
- interface Inter{
- void show();
- }
- class Outer {
- public static Inter method() {//static修饰,Inter接口定义
- return new Inter() {//注意返回的是一个接口,所以用return
- public void show() {//注意这里要有public修饰
- System.out.println("HelloWorld");
- }
- };
- }
- }
- public class test{
- public static void main(String[] args){
- Outer.method().show();
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。