Java匿名内部类
package com.qf.demo01; //1.定义一个接口,抽象类 interface A{ public void test();//抽象方法 public void fun(); } //2.实现类,实现这个接口 //class A1 implements A{ // // @Override // public void test() { // System.out.println("实现类A1,实现以下接口A中的test()。。。"); // } //} public class Test1 { public static void main(String[] args) { //3.创建对象 // A a = new A1(); // a.test(); //提示:如果说A1这个实现类只使用一次,也就是说,只创建一次对象。 //匿名类:只要类,不要类名 A a2 = new A(){//new,创建接口的匿名的实现类的对象。 @Override public void test() { System.out.println("通过匿名内部类的方法实现来的。。"); } @Override public void fun() { System.out.println("..."); } }; //=右边干啥呢?创建对象:创建接口A的实现类的对象。 a2.test(); a2.fun(); //=左边不变, 还是声明接口类型的引用 //=右边,new 接口名 () {} //new-->创建对象 //接口名 -- >创建哪个接口的实现类的对象 //(), //{},指代接口A的实现类。 //思考题:如果将一个接口作为一个方法的参数,可以直接创建一个匿名内部类的对象作为实参? // new A(){ // // @Override // public void test() { // // } // // }.test();//创建一个匿名内部类的匿名对象,调用方法。 } }