`
fanjf
  • 浏览: 329596 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

详解JAVA方法的访问修饰符和修饰符(static)

    博客分类:
  • Java
 
阅读更多

方法

访问修饰符 修饰符 返回类型 方法名称( 参数列表 throws 违例列表

(1) 类的构造器方法不能够有修饰符、返回类型和 throws 子句

(2) 类的构造器方法被调用时,它首先调用父类的构造器方法,然后运行实例变量和静态变量的初始化器,然后才运行构造器本身。

(3) 如果构造器方法没有显示的调用一个父类的构造器,那么编译器会自动为它加上一个默认的 super() ,而如果父类又没有默认的无参数构造器,编译器就会报错。 super 必须是构造器方法的第一个子句。

(4) 注意理解 private 构造器方法的使用技巧。

 

详解JAVA类的静态器(static)和静态方法:
   通常,我们创建类时会通过关键字new方式声明一个类的实例对象,即:
ClassA classA = new ClassA();
在通过类的实例对象调用该类的方法。

如果声明一个类的实例对象,但没有创建该对象。即:
ClassA   classA = null;
实际上是不能得到该类的任何东西的。只有执行了new运算,才会正式产生数据存储空间,并可使用调用该类的所有的方法(除了私有方法)。

但在两种特殊的情形下,上述方法并不够用。一种情形是只想用一个存储区域来保存一个特定的数据——无论要创建多少个对象,甚至根本不创建对象。另一种情形是我们需要一个特殊的方法,它没有与这个类的任何对象关联。也就是说,即使没有创建对象,也需要一个能调用的方法。为满足这两方面的要求,可使用static(静态)关键字。一旦将什么东西设为static,数据或方法就不会同那个类的任何对象实例联系到一起。所以尽管从未创建那个类的一个对象,仍能调用一个static方法,或访问一些static数据。而在这之前,对于非static数据和方法,我们必须创建一个对象,并用那个对象访问数据或方法。这是由于非static数据和方法必须知道它们操作的具体对象。当然,在正式使用前,由于static方法不需要创建任何对象,所以它们不可简单地调用其他那些成员,同时不引用一个已命名的对象,从而直接访问非static成员或方法(因为非static成员和方法必须同一个特定的对象关联到一起)。

    有些面向对象的语言使用了“类数据”和“类方法”这两个术语。它们意味着数据和方法只是为作为一个整体的类而存在的,并不是为那个类的任何特定对象。有时,您会在其他一些Java书刊里发现这样的称呼。  
  为了将数据成员或方法设为static,只需在定义前置和这个关键字即可。例如,下述代码能生成一个static数据成员,并对其初始化:  
  class   StaticClassA   {  
static   String  str   =  “我是一个静态变量,在类的实例化时,首先调用我,为我分配物理存储空间,然后才可以调用类的构造方法”;  

public StaticClassA(){

                System.out.println(“已经为本类的所有静态变量分配了物理存储空间”);
}
  }   

测试案例:
/**
 * 通过不同的调用方式,测试类的静态器和静态方法的加载顺序
 * @author fanjf
 * @date 2012-2-25
 */
public class StaticMethod {
        static{
                System.out.println("StaticMethod 的静态器");
        }
        
        /**
         * 当不是通过new创建一个类的实例,直接调用这个类的静态方法是否执行该类的静态器
         * @return void
         * @author fanjf
         * @date 2012-2-25
         */
        public static void testStaticMethod(){
                System.out.println("StaticMethod 的静态方法");
        }
}

在写一个测试类,测试上述类的静态器和静态方法的加载顺序:
(1)
执行代码:StaticMethod sm = new StaticMethod();
输出语句:
StaticMethod 的静态器
这是最基本的,也是大家很容易理解:实例化类时,自动加载类的静态器。

(2)
执行代码:StaticMethod me = null;
则不输出任何语句。
这是因为:声明一个类的对象,但没有实例化,不加载该类的任何东西。

(3)
执行代码:StaticMethod.testStaticMethod();
输出语句:
StaticMethod 的静态器
StaticMethod 的静态方法
这是为什么呢?这就要谈到:JAVA类的加载,连接与初始化。
Java程序对类的使用方式可分为两种:主动使用和被动使用。
所有的Java虚拟机实现必须在每个类或接口被Java程序“首次主动使用”时才初始化他们。

主动使用分为六种:
1,创建类的实例;
2,访问某个类或接口的静态变量,或者对该静态变量赋值。
3,调用类的静态方法
4,反射:如Class.forName(“类的全名:com.fanjf.StaticMethod”)
5,初始化一个类的子类(它会首先加载其父类的所有静态成员:静态变量,静态器。不包含静态方法)。
6,Java虚拟机启动时被标明为启动类的类。

除了以上6种情况,其他使用Java类的方式都被看作是对垒的被动使用,都不会导致类的初始化。
如 ClassA classA = null。


所以上述输出是因为主动使用了Java类的第三种:
(4)
如果一起执行如下代码,则输出什么呢?大家不妨动手试试:调用类的静态方法。
StaticMethod me = null;
System.out.println("——————————————");
                
StaticMethod.testStaticMethod();
System.out.println("——————————————");
                
StaticMethod sm = new StaticMethod();

  • 大小: 102.5 KB
分享到:
评论

相关推荐

    Java访问修饰符

    "Java 访问修饰符详解" Java 访问修饰符是 Java 编程语言中的一种重要机制,它控制着类、方法和变量的访问权限。访问修饰符可以分为四种:public、protected、private 和缺省(无访问修饰符)。 public 访问修饰符...

    java访问权限修饰符public.doc

    java 访问权限修饰符详解 在 Java 语言中,访问权限修饰符是指用来限定类、成员变量和方法的可访问范围的关键字。访问权限修饰符分为四种:public、protected、friendly 和 private。每种修饰符都有其特定的访问...

    显示访问修饰符用法的 Java 程序.docx

    "Java 访问修饰符详解" Java 访问修饰符是 Java 语言中的一种机制,用于确保类、构造函数、变量、方法或数据成员的安全性和可访问性。在 Java 中,访问修饰符共有四种类型:默认、私有、受保护和公共。 默认访问...

    java修饰符

    - **描述**:当没有明确指定访问修饰符时,默认访问级别(即没有`public`、`protected`或`private`前缀)被称为`default`。这种情况下,成员仅对同一包内的类可见。 - **用途**:`default`通常用于包内协作,促进同...

    final和static用法详解JAVA

    Java 中的 final 和 static 关键字详解 final 关键字是 Java 中的一种访问...final 和 static 关键字是 Java 中两个重要的访问修饰符,它们可以帮助开发者更好地设计和实现类、方法和变量,提高程序的效率和可维护性。

    详解Java修饰符

    在Java中,修饰符分为两类:访问修饰符和非访问修饰符。 访问修饰符控制类、变量、方法和构造函数的可访问性。Java提供了四种不同的访问级别: 1. 默认访问级别(default):当不使用任何修饰符时,这是默认的访问...

    Java软件开发实战 Java基础与案例开发详解 6-5 static修饰符 共13页.pdf

    ### Java软件开发实战:Java基础与案例开发详解之Static修饰符 #### 6.5 Static修饰符 在Java中,`static`关键字用于声明与类而不是与实例相关的变量、方法或代码块。这一特性使得静态成员能够被类本身直接访问,...

    java访问权限修饰符[参考].pdf

    ### Java访问权限修饰符详解 #### 一、访问权限修饰符概述 Java语言提供了四种不同的访问权限修饰符:`public`、`protected`、`default`(也称为包私有或包默认)以及`private`。这些修饰符用于控制类、方法、变量...

    Java软件开发实战 Java基础与案例开发详解 6-4 访问修饰符 共5页.pdf

    6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 ...

    java中的修饰符介绍

    ### Java中的修饰符详解 在Java编程语言中,修饰符是一种重要...总结来看,Java中的修饰符为开发者提供了强大的工具来控制类、变量和方法的访问级别及行为特性,合理地使用这些修饰符可以提高代码的安全性和可维护性。

    详解Java编程中protected修饰符与static修饰符的作用

    在Java编程中,`protected`和`static`是两个非常重要的修饰符,它们分别控制着类成员的访问权限和静态属性的行为。本文将详细阐述这两个关键字的作用,帮助初学者更好地理解和运用。 首先,我们来讨论`protected`...

    Java修饰符 abstract,static,final 的区别详解

    `static`修饰符用于定义静态成员(包括属性和方法)以及静态初始代码块。 - 静态属性:由`static`修饰的属性称为类变量,它们属于类本身而不是类的实例。这意味着所有类的实例共享同一份静态属性的副本,可以直接...

    深入讲解Java虚拟机系列之方法区

    在 Java 虚拟机中,方法区是一块非常重要的区域,它存储了所有类的信息,包括类名、父类、接口、权限修饰符、常量池、变量信息、方法信息、静态变量等。方法区是 Java 虚拟机中的一块共享内存区域,它是所有线程共享...

    java中static属性学习

    [访问权限修饰符] static [返回值类型] 方法名([参数列表]) { // 权限很重要 语句序列 } ``` 例如,`main`方法就是一个典型的静态方法,它是程序的入口点。 ```java public static void main(String[] args) { ...

    JAVA中static方法的用法实例详解

    - `public`、`protected`、`private`等访问修饰符可以与`static`一起使用,决定静态成员的访问范围。 - `public static`成员对所有类可见,`protected static`对同包及子类可见,`private static`仅限类内部可见。...

    java语言笔记包括基本数据类型、变量类型、修饰符、运算符等

    ### Java语言笔记——基本数据类型、变量类型、修饰符、运算符详解 #### 一、Java基本数据类型 Java提供了两种基本的数据类型:内置数据类型和引用数据类型。内置数据类型可以直接存储数值,而引用数据类型则存储...

    java方法调用

    根据是否有`static`修饰符,方法可以分为静态方法和非静态方法。 - **静态方法**:带有`static`关键字的方法称为静态方法。这类方法属于类本身,而不是类的实例。因此,即使没有创建类的对象,也能直接访问静态方法...

Global site tag (gtag.js) - Google Analytics