Java类与对象及访问控制的详细介绍

    科技2022-07-17  126

    类与对象及访问控制

    类与对象类对象对象的创建与使用修饰符 访问控制Java中的访问控制static关键字的使用final关键字的使用

    类与对象

    类:建立对象的模板。 一个类主要描述的是: 状态 + 行为  状态–>一个类的属性  行为–>一个类的方法 类–【实例化】->对象 Java中类的声明格式:

    [修饰符] class 类名 [extends 父类] [implements 接口名] { 类成员变量声明 //描述对象的状态 类方法的声明 //描述对象的行为 }

    对象

    对象:对象是实际存在的个体。 对象又被成为实例,每个对象都是类的一个新实例。 对象–【抽象】->类

    对象的创建与使用

     一个类要想真正的进行操作,则必须依靠对象,对象的定义格式如下: 类名称 对象名称 = new 类名称() ;  如果要想访问类中的属性或方法(方法的定义),则可以依靠以下的语法形式: 访问类中的属性: 对象.属性 ; 调用类中的方法: 对象.方法(实际参数列表) ;

    修饰符

      类的修饰符说明了类的属性,分为访问控制符、抽象类说明符和最终类说明符三种。

    类修饰符:

    类的修饰符说明了类的属性,分为访问控制符、抽象类说明和最终类说明符三种。

      public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类。

      private(私有),仅能被类自身的内部函数成员访问,其他任何类都不能直接访问。

      protected(受保护的),同private,但能被继承类受保护的成员访问,不能直接被私有成员访问。   abstract(抽象类说明符),将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现。

      final(最终类说明符),将一个类生命为最终(即非继承类),表示他不能被其他类继承。

      friendly,默认的修饰符,只有在相同包中的对象才能使用这样的类。

    成员变量修饰符:

      public(公共访问控制符),指定该变量为公共的,他可以被任何对象的方法访问。

      private(私有访问控制符)指定该变量只允许自己的类的方法访问,其他任何类(包括子类)中的方法均不能访问。

      protected(保护访问控制符)指定该变量可以别被自己的类和子类访问。在子类中可以覆盖此变量。

      friendly ,在同一个包中的类可以访问,其他包中的类不能访问。

      final,最终修饰符,指定此变量的值不能变。

      static(静态修饰符)指定变量被所有对象共享,即所有实例都可以使用该变量。变量属于这个类。

      transient(过度修饰符)指定该变量是系统保留,暂无特别作用的临时性变量。

      volatile(易失修饰符)指定该变量可以同时被几个线程控制和修改。

    方法修饰符:

      public(公共控制符)

      private(私有控制符)指定此方法只能有自己类等方法访问,其他的类不能访问(包括子类)

      protected(保护访问控制符)指定该方法可以被它的类和子类进行访问。

      final,指定该方法不能被重载。

      static,指定不需要实例化就可以激活的一个方法。

      synchronize,同步修饰符,在多个线程中,该修饰符用于在运行前,对他所属的方法加锁,以防止其他线程的访问,运行结束后解锁。

      native,本地修饰符。指定此方法的方法体是用其他语言在程序外部编写的。

    访问控制

    Java中的访问控制

    public访问控制符:   一个类被声明为公共类,表明它可以被所有的其他类所访问和引用。   一个类作为整体对程序的其它部分可见,并不代表类内所有的属性方法也同时对程序的其它部分可见。类的属性和方法能否为所有其它类所访问,还要看这些属性和方法自己的访问控制符。 (类的属性尽可能不用public关键字,否则会造成安全性和数据封装的下降。)缺省访问控制符:   只能被同一个包中的类访问和引用,其他包中的类不能访问private私有访问控制符   只能被该类自身所访问和修改protected保护访问控制符:   可以被三类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类。

    static关键字的使用

      static是静态修饰符,可以修饰类的属性,也可以修饰类的方法。被static修饰的属性不属于任何一个类的具体对象,是公共的存储单元。

    静态属性   定义静态数据:在属性的前面加上static关键字。 例如: class StaticText{ static int i = 7; }

      接下来,声明两个StaticText对象,但它们同样拥有StaticText.i的一个存储空间。

    StaticText st1 = new StaticText(); StaticText st2 = new StaticText();

      无论是st1还是st2都有同样的值47,因为他们引用的是同样的内存区域。 2. 静态代码块 一般形式:

    static { 语句序列 }

      下面代码定义了一个静态代码块`

    static{ int stVar = 12 ; //这是一个局部变量,只在本块内有效 System.out.println("This is static block."+ stVar);

      编译通过后,用Java命令加载本程序,程序的运行结果是首先输出:

    This is static block.12

      接下来才是main()方法的输出结果,由此可知,静态代码块甚至在main方法之前就被执行。   main()是一个静态方法,所以它才能被系统直接调用。

    静态方法 声明与定义: [访问权限修饰符] static [返回值类型] 方法名([参数列表]{ 语句序列 }

    静态方法和非静态方法区别:   在外部调用静态方法时,可以使用“类名.方法名”的方式,也可使用“对象名.方法名”的方式,而实例方法只有后面这种方式。(即调用静态方法可以无需创建对象)   静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),不能访问非静态的成员变量。

    final关键字的使用

    final成员   定义变量时,在其前面加上final关键字。 这个变量一旦被初始化便不可改变。   初始化可以在两个地方:一是其定义处;二是在构造方法中。

    final方法   将方法声明为final,不允许任何从此类继承的类来覆写这个方法,但是仍然可以继承这个方法。

    final类   一个final类是无法被任何人继承的。

    Processed: 0.010, SQL: 8