Final

  定义

     在实际开发中,有些方法不能直接覆盖掉,不想让子类重写父类的方法,那么就引出final关键字(可以修饰类,变量,成员方法)。

  基本用法

    final可以修饰类,但是该类不能被继承,但可以继承其他类。

    final可以修饰变量(成员变量,局部变量),(两种方法:一直接赋值,二用构造方法)但是该变量此时变成了一个常量。

    final可以修饰成员方法,但是该方法不能被重写,但可以被继承。

    final 修饰局部变量时,可以先定义使用时再赋值。

    final 不能修饰接口、抽象类、抽象方法。

    final修饰基本数据类型的变量时,必须赋予初始值且不能被改变,修饰引用变量时,该引用变量不能再指向其他对象(地址改变不了但可以修改其内容)。

    final也可以声明方法。方法前面加上final关键字,代表这个方法不可以被子类的方法重写。如果你认为一个方法的功能已经足够完整了,子类中不需要改变的话,你可以声明此方法为final。final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。

  应用实例:

1 class Fu {    
2     // final修饰的方法,不可以被覆盖,但可以继承使用
3     public final void method1(){}
4     public void method2(){}
5 }
6 class Zi extends Fu {
7     //重写method2方法
8     public final void method2(){}
9 }

static

  定义

    用来修饰的成员变量成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象的。也就是说,既然属于类,就可以不靠创建对象来调用了。

  static修饰成员变量

    当 static 修饰成员变量时,该变量称为类变量。该类的每个对象都共享同一个类变量的值。任何对象都可以更改该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。

    类变量:使用 static关键字修饰的成员变量。

      1、定义格式:

static 数据类型 变量名; 
例如
static String name;

      2、特点:

        被static修饰的成员变量会变成静态变量静态变量不单单仅仅只是属于某一个对象的,而是属于类的,所以静态变量会被该类的所有对象共享,也就是说所有该类的对象使用的是同一份数据

      3、静态成员变量的访问方式:

        对象名.静态成员变量名

        类名.静态成员变量名   推荐

  静态方法

    static修饰成员方法

      1.格式:

        其实就是在定义方法的时候,在返回值类型前面加static关键字即可

        修饰符 static 返回值类型 方法名(参数列表){

                       方法体

        }

      例:

1 class School {
2     public static final String SCHOOL_NAME = "北京大学";
3     public static void method(){
4         System.out.println("一个静态方法");
5     }
6 }

      2.静态成员方法访问方式:

           对象名.静态方法名(实参);

           类名.静态方法名(实参);  推荐

      3.注意事项:

        非静态方法中可以直接访问静态成员和非静态成员

        静态方法中只能直接访问静态成员,不能直接访问非静态成员

        静态方法中不能出现this/super

        静态成员:包含静态成员变量和静态成员方法

        多态调用方法中,编译看=左边,父类有,编译成功,父类没有,编译失败

          运行,静态方法,运行父类中的静态方法,

          运行,非静态方法,运行子类的重写方法

          成员变量,编译运行全是父类

        static关键字修饰变量时,会使该变量在类加载时就会被初始化,不会因为对象的创建再次被加载,当变量被static 修饰时就代表该变量只会被初始化一次.

 

  

 

posted on 2019-09-27 11:53  仰望星空77  阅读(146)  评论(0编辑  收藏  举报