内部类
概念
分类:成员内部类和局部内部类
1,成员内部类
定义格式:修饰符 class 类名称 {
//...
} //...
}
注意:内用外,随意访问;外用内,需要内部对象
使用内部类的方法
1,间接方式:在外使用内部类,外部类的方法中,然后main只是调用外部类的方法。
2,直接方式:公式:类名称 对象名 = new 类名称()
(外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称;
内部类的同名变量访问
如果变量出现的重名现象,那么个格式是:外部类名称.this.外部类成员变量
2,局部内部类(包含匿名内部类)
定义在一个方法内,就是一个局部内部类,只有当前方法可以 使用
格式:
修饰符 class 外部类名称{
外部类方法名 返回值类型(参数列表) {
class 局部内部名称{
//....
} } }
小节:
权限修饰符:public > protect > (default) > private
定义一个类的时候,权限修饰符的规则:
1,外部类: public default
2,成员内部类:public protect (default) private
3,局部内部类:什么都不能写****
局部内部类的final
局部内部类,要访问所在方法的局部变量,那么这个局部 变量必须是(有效final)。从java8开始事实不变,final关键字可以省略。(内存中保存时间长短的缘故)
匿名内部类
接口实现类(或者父类的子类)只需使用唯一一次,可以省略掉该类定义,用 匿名内部类 格式:接口名称 对象名 = new 接口名称() { 覆盖重写所有抽象方法 }
使用匿名内部类注意事项:
1,匿名内部类,在创建的对象的时候,只能使用唯一 一次。
2,匿名对象,在(调用方法)的时候,只能调用唯一 一次。
3,匿名内部类是省略了【实现类/子类名称】,但是匿名对象时省略了【对象名称】,不一样。
使用类作为成员变量
类作为成员变量时,对它进行赋值的操作,实际上,是赋给它该类的一个对象。
接口作为成员变量
接口作为成员变量时,对它进行赋值的操作,实际上,是赋给它该接口的一个子类对象。
jshell小工具
脚本,小工具