定义格式:
修饰符 class 外部类名称{
修饰符 返回值类型 外部类方法名称(参数列表){
class 局部内部类名称{
//……
}
}
}
创建:
调用:
小结类的权限修饰符:
public > protected > (default) > pprivate
定义一个类的时候,权限修饰符的规则:
1.外部类:public / (default)
2.成员内部类:public / protected / (default)/ private
3.局部内部类:什么都不写
局部内部类:如果希望访问所在方法的局部变量,那么这个局部变量必须是【有效final的】
备注:从Java 8+开始,只要局部变量事实不变,那么final关键字可以省略
原因new出来的对象在堆内存当中
2.局部变量是跟着方法走的,在栈内存当中
3.方法运行结束之后,立刻出栈,局部变量就会立刻消失
4.但是new出来的对象会在堆当中持续存在,直到垃圾回收消失
语法
定义在方法的里面 - 局部
package Test14_Demo.Demo08;/*@create 2020--12--02--15:12*/public class NestedClass {//定义成员变量private String name = "AAA";//外部类的方法public void outerMethod() {//定义一个局部内部类class InnerClass {//声明一个局部内部类的方法public void innerMethod() {System.out.println("局部内部类中的方法被调用了");System.out.println("外部类中的成员变量name的值为:"+ name);}}//定义好局部内部类之后可以使用类 - 必须使用InnerClass inner = new InnerClass();inner.innerMethod();}//生成get/setpublic String getName() {return name;}public void setName(String name) {this.name = name;}}
局部内部类的访问格式:
1.创建外部类
2.通过外部类的对象调用方法来操作局部内部类
package Test14_Demo.Demo08;/*@create 2020--12--02--15:09*/public class NestedClassDemo {public static void main(String[] args) {//创建外部类的对象NestedClass nc = new NestedClass();//通过外部类的对象调用方法来操作局部内部类nc.outerMethod();}}
