Java中的带包编译、访问权限、内部类

一、带包编译

    1.手动方式

            1). 首先创建一个Java带包类. Javac 类名.Java 编译生成.class文件

            2). 手动创建包文件夹 将.class文件拷贝到包文件夹中

            3). java 类名 运行文件

    2.自动编译

            1). 首先创建一个Java带包类. javac -d .  类名.Java文件编译

            2). java 类名 运行文件

二、访问权限

                        public    protected     default    private

同一个类中           √                √                √            √

同一个包中            √                √                √

不同包中的子类       √                √

不同包中的其他类    √

三、内部类

  成员内部类

            1.可以无限制的访问外部类中的成员,包括静态成员和私有成员

            2. 成员内部类中不能定义静态成员

            3. 如何访问内部类中的成员,需要创建内部类的对象

                    外部类名.内部类名 对象名 = new  外部类名().new 内部类名();

            4.外部类中如何访问内部类的成员(包含私有成员): 创建内部类的对象

            5. 如何在内部类中访问外部类中的同名成员: 外部类名.this.成员;

        局部内部类

            1. 只能在方法中认识

            2. 不能用public private protected修饰

            3. 局部内部类中的变量在jdk1.7之前必须声明为final的,1.8之后可以不能写final

        静态内部类

            1. 静态内部类中既可以定义静态成员,也可以定义非静态成员

            2.有静态成员的内部类一定是静态内部类

            3. 如何调用静态内部类中的成员

                静态的:  外部类名.内部类名.静态成员

                非静态的: new 外部类名.内部类名().非静态成员

        匿名内部类***

            本质: 实现了接口或者继承了类的子类对象

            格式:

                  创建方式一: 

                    类名/接口名 变量名 = new 类名/接口名(){

                        //要重写的方法

                    };

                    创建方式二:

                    new 类名/接口名(){

                        //要重写的方法

                            }.方法名();

你可能感兴趣的:(Java中的带包编译、访问权限、内部类)