事情是:今天学习Java回调的时候,爆栈瘾犯了,结果……打开相应的注释和注释一些代码就明白了,怎么操作?你懂的……
/*1.接口定义C功能*/
interface InterfaceC //接口C
{
public void FunctionC(); //C功能
}
/*2.定义B功能传入接口C参数*/
class ClassB //B类
{
void FunctionB(InterfaceC C) //B功能传入接口C参数
{
System.out.println("3"); //系统输出换行打印信息
C.FunctionC(); //接口C执行C功能
System.out.println("6"); //系统输出换行打印信息
}
}
/*3.执行B功能传入A类参数*/
class ClassA implements InterfaceC //A类实现接口C
{
ClassB B = new ClassB(); //创建B类为A类内部变量
void FunctionA() //A功能
{
System.out.println("2"); //系统输出换行打印信息
ClassA A = new ClassA(); //创建A类为A类函数内部变量
B.FunctionB(A); //B类执行B功能传入A类参数
System.out.println("7"); //系统输出换行打印信息
}
public void FunctionC() //C功能
{
/*以下注释如果打开会递归爆栈*/
//ClassA A = new ClassA(); //创建A类为A类函数内部变量
//B.FunctionB(A); //B类执行B功能传入A类参数
System.out.println("4"); //系统输出换行打印信息
System.out.println("FunctionA From FunctionC"); //系统输出换行打印信息
System.out.println("5"); //系统输出换行打印信息
}
}
/*4.执行A功能*/
class CallbackDemo //回调示例类
{
public static void main(String[] Ann) //主函数
{
System.out.println("1"); //系统输出换行打印信息
ClassA A = new ClassA(); //创建A类
A.FunctionA(); //A类执行A功能
/*以下注释如果打开会递归爆栈*/
//A.FunctionC(); //A类执行C功能
System.out.println("8"); //系统输出换行打印信息
}
}
黑马程序员强悍的风格根本绝对无需解释!