java常见修饰符小结

java常见修饰符总结

  1、访问修饰符:public 对外公开  所有是类都能访问

                                protected 受保护的 子类及其同一个包中的类可以访问
                                默认的:没有访问修饰符,只向同一个包中的类公开
                                private : 私有的 只有类本身可以访问,不对外公开
              
   2、abstract :可以用来修饰类和成员方法
    A:用该修饰符修饰的类表示抽象类,抽象类位于继承树的抽象层,该类不能被实例化,即不允许创建抽象类本身的实例

    B:用该修饰符修饰的方法表示抽象方法,该方法没有方法体,抽象方法是用来表述系统具有什么功能,但不提供具体的实现。  

       使用该修饰符需要遵守以下语法:

       A:抽象类中可以没有抽象方法,但包含抽象方法的类必须被定义为抽象类,如果子类没有实现 父类中的所有的抽象方法,那么子类也必须被定义 为抽象类

      B:抽象类中不能定义构造方法,也不能定义静态方法
      C:抽象类及抽象方法不能被final修饰,abstract与final不能同时出现在同一个类中,因为抽象类只有允许创建子类,它的抽象方法才能被实现,并且 只有它的具体子类 才能被实例化,而final修饰的类不允许有子类,用final修饰的方法不允许被子类覆盖,所 以把abstract和final同时使 用会自相矛盾
   
   3、final :用来修饰非抽象类、非抽象方法和变量,被final修饰的类不能被继承,不能有子类。 被final修饰的方法不能被覆盖,final修饰的变量为常   量,只能被赋值一次。
        A:final类:在如下的情况的时候可以将该类定义为final类。不是专为继承而设计的类,类的方法之间有复杂的调用关系。若随意的创建这些类的子类,子类就有可能会错误的修改父类的细节在创建对象模型时,确定该类不会被扩展
        B:final方法:在父类不允许子类覆盖某个方法时,可将该方法声明为final类型。
        C:final变量:表示取值不会变化的常量 可以修饰静态变量、实例变量和局部变量
                final修饰的成员变量必须显式初始化 
                final类型的实例变量,可以在定义变量时或者在构造方法中进行初始化;但对于final类型的静态变量,只能在定义时初始化final类型的变量 能赋值一次。
                final修饰引用类型的变量时,那么该变量只能始终引用一个对象,但是可以改变对象的内容。
     在程序中使用final来定义常量具有以下好处:
                a:提高程序的安全性,禁止非法修改取值固定并且不允许改变的数据。
                b:提高程序代码的可维护性和可读性。
    4、static:  
    <1>、static变量:
       类的成员变量分为两种:被static修饰的变量叫类变量或静态变量,另一中没有被static修饰的叫实例变量
         
         静态变量与实例变量的区别:
            A:静态变量在内存中只有一个拷贝,jvm只为静态变量声明一次内存,在加载类的过程中完成静态变量的内存分配。可通过类名直接访问。
            B:对于实例变量,每创建一个实例,就会为实例变量分配一次内存,在内存中有多个拷贝,互不影响。
        静态变量的作用:
            A:能被类的所有实例共享,可作为实例之间进行交流的共享数据
            B:若类的所有实例都包含一个相同的常量属性,可把这个属性定义为静态常量类型,从而节省内存空间。
              
       <2>、static方法:
               成员方法分为静态方法和实例方法,用static修饰的叫静态方法或类方法,它也是静态变量的一种,不需要创建类的实例,就可以直接通过类名访问。
            A:静态方法可访问的内容:由于静态方法不需要通过它的类的任何实例就会被调用,因此静态方法中不能使用this关键字,不能直接访问所属                   类的实例变量和实例方法(因为JVM无法定位,若实在要访问某个实例变量,则必须通过所属类的实例进行访问),但可以直接调用所属类的
            B:实例方法可访问的内容: 未用static修饰的方法,就叫做实例方法。在实例方法中可实际访问所属类的静态变量、静态方法、实例变量和实 例方法。
            C:静态方法必须实现:静态方法用于表示某个类所特有的功能,该功能的实现不依赖于类的具体实例,也不依赖于它的子
类,所以当前类必 须为静态方法提供实现。
       <3>、static块:静态代码块。类中可以包含静态代码块,它不存在于任何方法体中。
               在JVM加载类时会执行这些静态代码块。若类中包含多个静态块时,那么JVM将按照它们在类中出现的顺序 依次执行它们,每个静态代码块   只会被执行一次。
               类的构造方法用于初始化类的实例,而类的静态代码块则可用于初始化类,给类的静态变量赋初始值