zoukankan      html  css  js  c++  java
  • 初学Java修饰符

    Java中的修饰符总共有一下几个,我们要介绍和平时经常使用的只是他们的一部分:

    abstract(抽象的),static(静态的),public(公共的),protected(受保护的),private(私有的),synchronized(同步的),native(本地的),transient(暂时的),volatile(易失的),final(不可改变的)

    下面重点介绍public,protected,private,abstract,static,final这几个修饰符

    1:public,protected和private用于访问控制修饰符

      a:公开级别:用public修饰,对外开放

      b:受保护级别:用protected修饰,向子类及同一个包中的类公开

      c:默认级别:没有访问控制修饰符,向同一个包中的类公开

      d:私有级别:用private修饰,只有类本身可以访问,不对外公开

    其中我们队类的修饰一般是public或者是默认的修饰符,不存在用private和protected修饰的类

    另外访问级别仅仅适用于类和类的成员,而不适用于局部变量局部变量只能在方法内部被访问,不能用public,protected或者private来修饰

    2:abstract修饰符

     用abstract修饰符来修饰类或者类的方法

     a:用abstract修饰的类表示抽象类,抽象类位于继承树的抽象层,抽象类不能被实例化,即不允许创建抽象类本身的实例。没有用abstract修饰的类成为具体类,具体类可以被    实例化

     b:用abstract修饰的方法被表示抽象方法,抽象方法没有方法体,即没有{},

     c:抽象类中可以没有抽象方法,但是包含了抽象方法的类必须被定义为抽象类,如果子类没有实现父类中定义的抽象方法,那么子类也必须被定义为抽象类,否则编译错误

     d:没有抽象构造方法,也没有抽象静态方法(即abstract和static不能同用,原因见后面的static属性)

     e:抽象类中可以有非抽象的构造方法,创建子类的实例时可能会调用这些构造方法

     f:抽象类以及抽象方法不能被final修饰符修饰(即abstract和final不能共用)

    3:final修饰符

      final修饰符的意思是"不可改变的",类似于c++中的const,它可以用来修饰类,类的方法和成员变量(包括实例变量和静态变量,局部变量)

      a:用final修饰的类不能被继承,即终止了继承,所以final不能喝abstract共用。

      b:用final修饰的方法不能被子类的方法覆盖,即子类中不能允许有和父类中有相同名字,参数签名和返回值的方法

      c:用final修饰的变量表示敞亮,只能被赋值一次,其中实例变量和静态变量的实例化有有所不同。他们都可以声明是初始化。对于final类型的实例变量(及类的没有用static修饰的成员变量),还可以在构造方法中进行初始化。对于final类型的静态变量,还可以在静态代码块中进行初始化(后面static会讲到,注意是静态代码块而不是静态方法)。

      d:final变量只能被赋值一次。

      e:如果对于一个引用类型变量声明为final,那么该引用变量始终引用一个对象,但可以改变对象的内容,下面是例子说明

        public class Sample{

        public int war;

        public Sample(int war){this.war=war;}

        

        public static void main(String args[]){

          final Sample temp=new Sample(1);

          temp.war=2;    //合法,虽然temp引用是final类型的,但是可以改变它引用的对象的内容

          temp=new Sample(2); //编译错误

      }

      }

    4:static修饰符

      static修饰符可以用来修饰类的成员变量,成员方法和代码块

      a:用static修饰的成员变量表示静态变量,可以直接通过类名来访问。static不能用来修饰局部变量

      b:用static修饰的方法表示静态方法,可以直接通过雷鸣来访问

      c:用static修饰的程序代码块表示静态代码块,当java虚拟机加载类时,就会执行该代码块(注意它的执行时间)

      d:关于abstract和static是一对"冤家"的原因:因为静态方法表示这个类所特有的功能,这种功能的实现不依赖于类的具体事例,也不依赖于它的子类。既然如此,当前类必     须为静态方法提供实现。换句话说,静态的方法不能被定义为抽象的方法。

      e:main函数是静态方法的原因:因为静态方法不属于任何类,可以通过类名来调用,当Java虚拟机加载类时,它会自动寻找程序的入口,然后执行这个函数,不需要对类进     行实例化

      f:static代码块。static代码块和static方法类似,它不存在于任何方法体中。在Java虚拟机加载类时会执行这些静态代码块,如果类中包含多个静态代码块,那么他们执行的     顺序就是他们在类中出现的顺序.

        

  • 相关阅读:
    Python时间戳
    vux x-input 清除按钮不起作用
    MySQL连接查询流程源码
    Linux下用的脚本
    TableCache设置过小造成MyISAM频繁损坏 与 把table_cache适当调小mysql能更快地工作
    批量导入数据到InnoDB表速度优化
    DBA面对新mysql环境
    (进阶篇)PHP+Mysql+jQuery找回密码
    (进阶篇)PHP实现用户注册后邮箱验证,激活帐号
    (实用篇)php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
  • 原文地址:https://www.cnblogs.com/buxianghe/p/2360430.html
Copyright © 2011-2022 走看看