151220InnnerClassDemo3

来源:互联网 发布:win7网络上有红叉 编辑:程序博客网 时间:2024/06/07 04:53
package java151220;


/*
匿名内部类
1,匿名内部类的书写格式
2,定义匿名内部类的前提


内部类必须是继承一个类或者实现接口
 */
public class InnnerClassDemo3 {
public static void main(String[] args) {
new Outer3().function();
}


}


abstract class AbsDemo {
// 当抽象方法很多时,匿名内部类即为不美观
abstract void show();


abstract void show1();


abstract void show2();


abstract void show3();


abstract void show4();


abstract void show5();


abstract void show6();
}


class Outer3 {
int x = 3;


/*
* class Inner extends AbsDemo{ void method(){
* System.out.println("method:"+x); }

* @Override void show() { } }
*/
public void function() {
// AbsDemo absDemo=new Inner();
// new Inner().method();
// 匿名内部类
// new AbsDemo() {
//
// @Override
// void show() {
// System.out.println(x);
// }
// void abc(){
// System.out.println("abc");
// }
//
// }.show();


// new AbsDemo() {
//
// @Override
// void show() {
// System.out.println(x);
// }
//
// void abc() {
// System.out.println("abc");
// }
//
// }.abc();
// 多态
AbsDemo absDemo = new AbsDemo() {
int num = 9;


@Override
void show() {
System.out.println(x);
System.out.println("num=" + num);
}


void abc() {
System.out.println("abc");
}


@Override
void show1() {


}


@Override
void show2() {


}


@Override
void show3() {
}


@Override
void show4() {
}


@Override
void show5() {
}


@Override
void show6() {
}
};
absDemo.show();
// absDemo.abc(); 父类并不能调用子类特有的abc方法
}
}
0 0