局部内部类是指在外部类的方法内定义的类,由于内部类在外部类的方法内定义,内部类的生命周期会随着方法的生命周期结束而结束。因此内部类的作用范围仅限于方法内,在方法的外部不能访问该内部类。
案例1:新建一个Teacher类,在Teacher类的teaching()方法内部定义一个内部类Course(课程类)。
在PCoreUnit3项目student包内新建Teacher类。代码如下:
package student;
/**
* @ClassName: Teacher
* @Description: 包与类的高级特性(局部内部类)案例
* @author 编程训练营
* @date 2019年12月23日
*
*/
public class Teacher {
// 定义teaching()方法
public String teaching(String courseName)
{
//定义内部类
class Course {
String courseName;
public Course(String courseName)
{
this.courseName = courseName;
}
String getCourseTime()
{
return "每周五上午9点上课";
}
}
// 实例化Course对象
Course course = new Course(courseName);
return course.getCourseTime();
}
}在Teacher 类的teaching()方法内部定义了Course类,用于获取课程的上课安排时间。Course类需要传入课程名称,并对外提供了getCourseTime()方法,返回传入课程名称的上课安排时间。
需要注意的是,局部内部类的成员变量和方法不能使用访问权限符修饰。因为方法外部的代码无法访问内部类。
案例2:建立TeacherTest类,实例化Teacher 对象,并调用Teacher 对象teaching()方法获取课程的上课安排时间。
在PCoreUnit3项目student包内新建TeacherTest类。代码如下:
package student;
/**
* @ClassName: TeacherTest
* @Description: 包与类的高级特性(局部内部类)案例2
* @author 编程训练营
* @date
*
*/
public class TeacherTest {
/**
* @Title: main
* @Description:Java程序入口main方法
* @param @param args 参数
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
// 实例化Teacher对象
Teacher teacher = new Teacher();
// 输出课程安排时间
System.out.println("体育课上课安排:" + teacher.teaching("体育"));
}
}程序执行结果如下图所示:
