【Java_10】final 关键字、权限修饰符、内部类

2021-02-04 10:05:10 浏览数 (1)

一、final 关键字

1. final 用于修饰不可改变的内容
代码语言:javascript复制
① 修饰类,被修饰的类不能被继承。
② 修饰方法,被修饰的方法不能被重写。
③ 修饰变量,被修饰的变量不能重新赋值。
2. final 的使用
代码语言:javascript复制
① 修饰类
    * final class 类名{ ··· }
② 修饰方法
    * final 返回值类型 方法名( 参数列表 ) { ··· }
③ 修饰变量
    * final 数据类型 变量名;

二、权限修饰符

| | 同一个类中 | 同一个包中 | 不同包的子类 | 不同包的无关类 | | public | ✓ | ✓ | ✓ | ✓ | | protected | ✓ | ✓ | ✓ | | | default | ✓ | ✓ | | | | private | ✓ | | | |

三、内部类

1. 成员内部类
代码语言:javascript复制
① 格式
    //外部类
    class 类名 {
        //内部类
        class 类名 {
            ···
        }
    }
② 注意
    * 成员内部类定义在类中方法外
    * 内部类可以直接访问外部类的成员,包括私有成员
    * 外部类要想访问内部类的成员必须先创建内部类对象
2. 局部内部类
代码语言:javascript复制
① 格式
    class 类名 {
        修饰符 返回值类型 方法名( 参数列表 ) {
            class 类名 {    //局部内部类
                ···
            }
        }
    }
② 注意
    * 局部内部类定义在方法中
    * 局部内部类访问的局部变量必须是【有效final】# java 8  若变量不改变,final 可以省略 #
    * 局部内部内在堆中,局部变量在栈中,方法出栈后,局部变量消失,局部内部类等待 JVM 回收
3. 匿名内部类 ☆☆☆☆☆
代码语言:javascript复制
① 格式
    父类或接口名 对象名 = new 父类或接口 {
        //方法重写
        @Override
    }
② 使用方法
    * 对象名.方法名();
    * new 父类或子类接口 { ··· }.方法名();
③ 注意
    * 【等号左边】 是多态,父类引用指向子类对象。
    * 【等号右边】 定义并创建父类或接口的类对象。
    * 匿名内部类是省略了【实现类/子类】名称,匿名对现象是省略了【对象名】。
④ 示例
    //接口
    public interface Inter {
        //抽象方法
        public abstract void method();
    }

    //测试类
    public class InterAnonymous {
        public static void main(String[] ards) {
            //匿名内部类
            new Inter {
                public void method() {
                    System.out.println("使用了匿名内部类和匿名对象");
                }
            }.method();
        }
    }

0 人点赞