整理了长风老师在Day11的局部内部类章节的随堂代码
局部内部类
package com.cskaoyan.javase.oop3.innerclazz6.local4.usecase3;
/**
* @description: 局部内部类的经典实用
* @author: 长风老师
**/
/**
* 局部内部类的经典使用:
* 传参:接口或抽象类,传子类对象
* 返回值:接口或抽象类,传子类对象
* 自己理解:new 类名() 不就是没名字的创建对象么,那形式就是后面的匿名局部类
* 只不过位置是在参数、返回值的地方
*
*
*
*/
public class Demo {
public static void main(String[] args) {
//【1.】传参时:传入子类对象
//1,正常思路调用test()方法: 新建一个class 实现这个接口.然后创建对象传入方法
//test(new IAImpl());
//这个方法需要传入接口的实现子类对象
//在main方法内部,写一个局部内部类实现接口,然后创建对象,传入对象
class IAImpl implements IA{//就是这个,实现IA接口的类IAImpl
//里面是具体方法,重写IA中抽象方法method
//IA需要自己在main方法外写好
@Override
public void method() {
System.out.println("高端的调用test()方法:参数中创建局部内部类对象");
}
}
//之后调用test方法,括号中参数是语句,返回值对象
//new 接口实现类对象,是匿名的
//这个test方法需要在main的外面写
//参数:接口对象
//返回:调用对象a的抽象方法
test(new IAImpl()); //创建子接口对象。
//【2.】返回时:返回子类对象,在test2方法体中写局部内部类
test2().method();
}
public static void test(IA a){
a.method();
}
public static IA test2(){
//【2.】返回:返回子类对象
class IAImpl implements IA{
@Override
public void method() {
System.out.println("高端的调用test()方法:返回语句中创建局部内部类对象");
}
}
return new IAImpl();
}
}
interface IA{
void method();
}