`
小女墙
  • 浏览: 111800 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

类变量宇成员变量的区别

    博客分类:
  • JAVA
 
阅读更多

类变量:静态域,静态字段,或叫静态变量,它属于该类所有实例共有的属性,在内存中只有一个地方存储这个变量。而且所有的实例都可以修改这个类变量的值(前提是这个类变量没有被final修饰,否则是常量了),而且访问类变量的时候不用实例,直接用类就可以了。

类方法:和类变量一样,可以不用实例,直接用类就可以调用类方法。

 

实例变量:实例域,实例字段,或叫成员变量。

实例方法:或叫成员方法,必须先有实例,然后才能通过实例调用该实例方法。

 

使用方法:类方法可以直接调用类变量和类方法

               类方法不可以直接调用实例变量和实例方法

               类方法中没有this,因为没有实例,this不知道调用哪个实例

               类方法可以从类里面直接访问类成员

               实例方法可以调用类方法,访问类变量,但是不提倡这样做,会把类方法和类变量混淆成实例方法和实例变量

 

程序实例:

class AnIntegerNamedX {
     int x;       //这个是成员变量
     public int x() {    //成员方法
            return x;

    }

    public void setX(int newX) {        //成员方法
            x = newX;
    }
}

public class Practice{
    public static void main(String args[]){
           AnIntegerNamedX myX = new AnIntegerNamedX();
           AnIntegerNamedX anotherX = new AnIntegerNamedX();

           myX.setX(1);
           anotherX.x = 2;

           System.out.println("myX.x = " + myX.x());
          System.out.println("anotherX.x = " + anotherX.x());

    }
}

 

2:

class AnIntegerNamedX {
  static int x;            //这里写成static,结果就变成全是2了,因为类变量是被实例所共享的,包括myX和anotherX

                                 调用anotherX时所有的所有实例都改变了。

  public int x() {
         return x;

  }

  public void setX(int newX) {
        x = newX;
  }
}
public class Practice{
     public static void main(String args[]){
            AnIntegerNamedX myX = new AnIntegerNamedX();
            AnIntegerNamedX anotherX = new AnIntegerNamedX();

            myX.setX(1);
            anotherX.x = 2;         //这里把X的值改成2,所有实例的X都是2了,因为类变量是被所有实例共享的,任何实

 

                                              例都可以对类变量做最终的修改

            System.out.println("myX.x = " + myX.x());
            System.out.println("anotherX.x = " + anotherX.x());

      }
}

       

3:同样的,当把那两个方法都加上static变成类方法的时候,会提示错误让你把X变成静态,是应为类方法不能直接访问实例变量!      

分享到:
评论

相关推荐

    Visual C++ 2005入门经典.part08.rar (整理并添加所有书签)

    16.6.1 给文档类添加存储线宽的成员 16.6.2 给元素添加线宽 16.6.3 在视图中创建元素 16.6.4 练习使用对话框 16.7 使用微调按钮控件 16.7.1 添加Scale菜单项和工具栏按钮 16.7.2 创建微调按钮 16.7.3 生成比例对话...

    Visual C++ 2005入门经典.part04.rar (整理并添加所有书签)

    16.6.1 给文档类添加存储线宽的成员 16.6.2 给元素添加线宽 16.6.3 在视图中创建元素 16.6.4 练习使用对话框 16.7 使用微调按钮控件 16.7.1 添加Scale菜单项和工具栏按钮 16.7.2 创建微调按钮 16.7.3 生成比例对话...

    Visual C++ 2005入门经典.part07.rar (整理并添加所有书签)

    16.6.1 给文档类添加存储线宽的成员 16.6.2 给元素添加线宽 16.6.3 在视图中创建元素 16.6.4 练习使用对话框 16.7 使用微调按钮控件 16.7.1 添加Scale菜单项和工具栏按钮 16.7.2 创建微调按钮 16.7.3 生成比例对话...

    Visual C++ 2005入门经典.part09.rar (整理并添加所有书签)

    16.6.1 给文档类添加存储线宽的成员 16.6.2 给元素添加线宽 16.6.3 在视图中创建元素 16.6.4 练习使用对话框 16.7 使用微调按钮控件 16.7.1 添加Scale菜单项和工具栏按钮 16.7.2 创建微调按钮 16.7.3 生成比例对话...

    Visual C++ 2005入门经典.part06.rar (整理并添加所有书签)

    16.6.1 给文档类添加存储线宽的成员 16.6.2 给元素添加线宽 16.6.3 在视图中创建元素 16.6.4 练习使用对话框 16.7 使用微调按钮控件 16.7.1 添加Scale菜单项和工具栏按钮 16.7.2 创建微调按钮 16.7.3 生成比例对话...

    Visual C++ 2005入门经典.part05.rar (整理并添加所有书签)

    16.6.1 给文档类添加存储线宽的成员 16.6.2 给元素添加线宽 16.6.3 在视图中创建元素 16.6.4 练习使用对话框 16.7 使用微调按钮控件 16.7.1 添加Scale菜单项和工具栏按钮 16.7.2 创建微调按钮 16.7.3 生成比例对话...

    《java基础入门》第三版 第三~第四章作业.doc

    * 在 Java 中,成员变量可以是基本类型或引用类型。 十、其他 * 在 Java 中,类可以让我们用程序模拟现实世界中的实体。 * 对象的行为和属性被封装在类中,外界通过调用类的方法来获得,但是要知道类的内部是如何...

    java保留字、关键字

    对于访问修饰符,`public`、`protected`和`private`分别代表不同的访问级别,控制类、方法和变量的可见性。`default`访问修饰符(没有明确指定的修饰符)则在同一个包内的类之间提供访问权限。 `*`在import语句中...

     java经典笔试题大全(50道含答案)

    - this用来调用当前类的构造方法或成员变量 - super()和this()不能同时出现在一个构造函数中 5. 访问修饰符: - public:公共访问,任何地方都可以访问 - protected:保护访问,同一个包内和子类可以访问 - ...

    C++ 最全的面试题整理

    - **虚函数**:在基类中声明为 `virtual` 的成员函数,允许派生类重新定义。 - **纯虚函数**: - 用 `= 0` 标识,不允许实例化包含纯虚函数的类(抽象类)。 - 目的是为了在基类中预留接口,让派生类实现具体的...

    传智播客第五期教学PPT(无加密)

    1. **C++基础**:讲解C++的基础语法,包括变量、数据类型、运算符、流程控制语句(如if-else、switch-case、for、while)、函数的声明与定义、数组、指针等。 2. **面向对象编程(OOP)**:深入介绍C++的三大面向...

    三国无双项目文档1

    【项目成员与职责】 项目由朱晨宇担任组长,负责整体管理与协调;王熙林负责项目设计与实现;于鹏则承担项目实现和测试工作。 【系统需求】 游戏运行在具备以下配置的环境下: - 处理器:Intel Xeon E5-2680 2.50...

    cpp11_Make_life_easier.pdf

    例如,文档中的`struct A`和`struct B`通过使用`std::tie`来返回不同数量的成员变量组成的元组,展示了变参模板的灵活性和便利性。 其次,文档提到了C++11中的`auto`和`decltype`关键字的结合使用,这使得自动类型...

    C++面向对象程序设计 游泳池

    类是OOP中的核心构造块,它封装了数据(成员变量)和行为(成员函数)。对于游泳池,我们可以有以下数据成员: 1. **容量**:表示游泳池的最大容纳水量。 2. **当前水位**:表示游泳池当前的水位。 3. **是否开放**...

    java代码-09软件三班吴培宇实训五

    类定义了属性(数据成员)和行为(方法)。 3. **封装**:通过访问修饰符(public、private、protected)实现数据隐藏,保护对象的内部状态不被外部直接修改。 4. **继承**:一个类可以继承另一个类的属性和方法,...

    《java基础入门》第三版 第五章作业.doc

    NullPointerException是指空指针异常,例如,访问null对象的成员变量或方法。 2. ArrayIndexOutOfBoundsException ArrayIndexOutOfBoundsException是指数组越界异常,例如,访问数组的越界索引。 3. Arithmetic...

    PRML读书会合集打印版

    例如,西安交通大学的常象宇博士主讲了第一章“Introduction”,介绍了机器学习的基础理念;西北大学的planktonli老师主讲了第三章“Linear Models for Regression”,讲解了线性基函数模型、正则化方法等。 文档中...

    C++编程思想

    9.1.1 函数内部的静态变量 157 9.1.2 控制连接 160 9.1.3 其他的存储类型指定符 161 9.2 名字空间 161 9.2.1 产生一个名字空间 162 9.2.2 使用名字空间 163 9.3 C++中的静态成员 166 9.3.1 定义静态数据成员的存储 ...

    PRML读书笔记

    读书会的成立源于群内成员的偶然提议,并最终由一群志同道合的专业人士共同参与,轮流负责讲授各章节的内容。这显示了学习共同体的形成对于深化理解复杂知识体系的重要性。 接下来,针对读书笔记中提及的各章节知识...

Global site tag (gtag.js) - Google Analytics