A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© KevinJavaEE 初级黑马   /  2019-3-20 13:50  /  1003 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.final关键字

用法:

    -- 修饰一个类:public final class 类名称{}

                *  表示该类为最终类,不能由子类但可以有父类。除此与普通类包含的内容不会有区别

    -- 修饰一个方法:修饰符 final 返回值类型 方法名(参数列表){}

                *  表示该方法为最终方法,不能被覆盖重写,但可被继承

                *  对于方法来说,abstract和final关键字不能同时使用,因为abstract修饰的方法必定要被重写

       

    --修饰一个变量:分为局部和成员(全局)

                *  局部变量:对于基本类型,指的是变量的数据值不可变

                                        对于引用类型,不可变说的是地址值不可变

                *  成员变量:final修饰后,必须手动赋值(否则报错),不会再给默认值。

                             赋值方式:1.直接赋值;

                                                2.构造方法赋值,无参和有参构造均需进行赋值,且只能使用getXxx成员方法。



2.内部类

成员内部类

        格式:

                修饰符 class 类名称{
   
                                    修饰符 class 类名称{
   
                                }
   
                       }



        注意:

                      1.在类中,内用外,随意访问
   
                             -- 为了解决内外方法重名或变量重名,可通过“**外部类名.this.方法名(或成员变量名**)“或使用"**外部类对象.方法名**";
   
               2.在类中,外用内,需要内部类的对象。“**内部类对象.方法名(或成员变量名)**”
   
                      3.创建内部类对象格式:**外部类名称.内部类名称  对象名=new 外部类名称().new 内部类名称()**;



局部内部类(含匿名内部类)

局部内部类:

        定义在类中的方法中的类,成为局部内部类。其只能在方法中使用,要想使用局部内部类的方法,需要特殊的技巧。

        注意:局部内部类访问所在方法的局部变量,这个局部变量必须是有效final的。java8开始,局部变量只要不改变值,final可省。

    public class Outer {
   
    public void methodOuter(){
            final int num1=20;  //方法中的局部变量
        class Inner{
            int num =10;
            public void methodInner(){
                System.out.println(num);//10,局部内部类只能在当前方法中使用
            }
        }
        //使用局部内部类,只能在当前方法中使用,使用须在方法中创建局部内部类的对象,使用局部内部类的方法
        Inner inner=new Inner();
        inner.methodInner();
    }



匿名内部类:

        本质就是接口的实现类和父类的子类。匿名内部类需覆盖重写所有的抽象方法,匿名内部类中可以定义你自己的方法,但是该方法只能通过子类      调用,父类对象名只能调用抽象方法。

    接口名称 对象名 = new 接口名称() {
   
    ```
    // 覆盖重写所有抽象方法
   
    ```
   
    };


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马