使用Junit单元测试
局部内部类封装在外部类的一个方法中,此方法一般会有一个返回值,返回该局部类类型
package com.yzy.innerclass;
import org.junit.Test;
/**
* @className LocalInnerClass.java
* @author yangsir
* @version V1.0
* @date 2019年8月9日-上午12:03:03
* @description 如何调用局部内部类
*/
public class LocalInnerClass {
@Test
public void test1() {
// 1常规
Work w = new Student();// 父类引用指向子类对象
w.doWork();// 调用子类重写的接口中的方法
// 匿名类的对象
Work w1 = new Work() {
@Override
public void doWork() {
System.out.println("工作");
}
};
w1.doWork();// 调用匿名类的方法
System.out.println("===================================================");
}
@Test
public void test2() {
// 2匿名类的匿名对象
new Work() {
@Override
public void doWork() {
System.out.println("工作");
}
}.doWork();// 直接用new().work的形式,要重写doWork方法
System.out.println("===================================================");
}
@Test
public void test3() {
// 1.调用局部内部类
// Work work = new LocalInnerClass().getWork(); //new Teacher(); //创建一个局部内部类对象
// work.doWork();//调用getWork方法输出讲课(已注释)
// 2.调用
Work work = new LocalInnerClass().getWork();// 创建一个局部内部类对象
work.doWork();// 调用
}
// 局部内部类
public Work getWork() {
// 1局部内部类
// class Teacher implements Work{//局部内部类实现接口,重写doWork方法,返回值为Teacher
// @Override
// public void doWork() {
// System.out.println("讲课");
// }
// }
// return new Teacher();//返回一个Teacher对象
// 2局部内部类 匿名类的匿名对象
return new Work() {// 直接return一个匿名对象,然后重写里面的方法即可,注意这里的括号
@Override
public void doWork() {
System.out.println("员工在工作");
}
};
}
}
interface Work { // 一个接口
void doWork();
}
class Student implements Work {// 实现接口的类,有自己的方法
@Override
public void doWork() {
System.out.println("学习");
}
}
下面放一位小姐姐的总结图