`
lyy3323
  • 浏览: 85865 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java 基础之"实例方法,实例变量,类方法,类变量"

阅读更多
先一一分析一下这几个东东:实例方法,实例变量,类方法,类变量。


实例变量(instance variable):或叫实例域、实例字段(instance field),或叫成员变量(member variable)。实例的变量,每个实例的变量可能不同。

实例方法(instance method):或叫成员方法(member method)。供实例用的方法,必须要先有实例,才能通过此实例调用实例方法。

类变量(class variable):或叫静态域、静态字段(static field),或叫静态变量(static variable)。出现在这样的情况下:一个类的所有实例需要一个公有的属性,比如,一,统计实例个数;二,常量。类变量与类直接关联在一起。内存当中只有一个地方存放这个变量。任何实例都可以修改它的值(前提是它没有被final修饰符修饰,不然就是常量),但是,访问类变量并不需要实例,用类就可以操作了。

类方法(class method):跟类变量的基本特点一样。供类用的方法,可以没有实例,直接通过类来调用类方法。

从形式上看,类变量和类方法,比一般的变量和方法多了一个static修饰符。因为这个原因,类变量和类方法也被叫做静态变量和静态方法。

它们的使用方法:

实例方法可以直接访问实例变量,调用实例方法;
实例方法可以直接访问类变量,调用类方法。但不推荐这么做,原因是不清晰,容易把类变量误认为是实例变量,把类方法误认为是实例方法(借助IDE,它会给出警告信息。);
类方法可以直接调用类变量和类方法;
类方法不能直接调用实例变量和实例方法;
类方法里面不能使用“this”关键字,因为没有实例存在,“this”不知道引用哪个实例。
程序代码:


public class MyClass {
    public static String classVariable = "Class variable.";
    public String instanceVariable = "Instance variable.";

    public static void classMethod() {
        System.out.println("Class method.");
    }

    public void instanceMethod() {
        System.out.println("Instance method.");
    }

    public static void main(String[] args) {
        //call another class method via a class method
        classMethod();

        //call class method via class
        MyClass.classMethod();

        //access class variable via class
        System.out.println(MyClass.classVariable);
        System.out.println(classVariable);

        MyClass instance = new MyClass();
        //call class method via instance reference
        instance.classMethod();
        //access class variable via instance reference
        System.out.println(instance.classVariable);

        //call instance method via instance reference
        instance.instanceMethod();
        //access instance variable via instance reference
        System.out.println(instance.instanceVariable);
    }
}


注意这样一个特殊的情形:如果已有一个类变量,再定义一个方法去操作这个类变量。那么此方法可以不加static修饰符,本质上仍然是一个类方法。但是,现在就只能通过该类的一个实例,才能调用这个方法了。(这是典型的吃多了没事干。仅存活于某些笔试,面试题中。)
分享到:
评论

相关推荐

    Java实例变量、类变量、局部变量

    实例变量就是类中的成员变量,没有用static修饰的。 类变量是所有对象公用的,实例变量是对象私有的;当一个对象将类变量进行修改后,这个类的其他所有对象访问这个类变量都是修改之后的值。当实例变量修改后,只有...

    JAVA类的方法调用和变量

    JAVA类的方法调用和变量 一、类的分类: 1、普通类 2、抽象类(含有抽象方法的类) 3、静态类(不需要实例化,就可以使用的类) 二、方法的分类: 1、私有方法(只有类的内部才可以访问的方法) 2、保护方法(只有...

    Java中实例变量与类变量测试的代码清单.pdf

    Java中实例变量与类变量测试的代码清单.pdf 学习资料 复习资料 教学资源

    java 常量 变量 详细实例

    常量 变量 详细实例代码 常量 变量 详细实例代码常量 变量 详细实例代码常量 变量 详细实例代码常量 变量 详细实例代码常量 变量 详细实例代码

    java变量命名心得

    java变量命名的几个典型问题总结,通过一个实例展示局部变量与实例变量的区别。

    Java中的方法和变量在继承时的覆盖问题

    变量和方法覆盖和隐藏的不同:一个...而静态变量却可以隐藏父类的一个同名实例变量,同样,实例方法不能覆盖父类的同名静态方法,而变量却可以隐藏父类的同名变量成员,不论父类的这个变量成员是类变量或者是实例变量。

    java编程基础,应用与实例

    15.4 java.util.StringTokenizer类 238 15.5 java.util.Calendar类 240 15.6 巩固练习 242 第16章 AWT程序设计 244 16.1 java.awt.Component类 244 16.2 java.awt.Container类 247 16.3 布局管理器 ...

    计算机后端-Java-Java核心基础-第15章 面向对象07 08. 类变量和实例变量的内存解析.avi

    计算机后端-Java-Java核心基础-第15章 面向对象07 08. 类变量和实例变量的内存解析.avi

    Java经典编程源码基础例程300.zip

    实例075 动态调用类中方法 115 实例076 动态实例化类 116 实例077 创建长度可变的数组 117 实例078 利用反射重写toString()方法 119 第8章 字符串与包装类 121 实例079 将数字格式化为货币字符串 122 实例080 货币...

    java方法调用实例

    基本作业练习:class Fan{ double speed; double radius; boolean on; int numOfFan; Fan(double speed,double radius ,boolean on ){ this.speed=speed; this.radius = radius; this.on = on;... }

    Java 基础核心总结 +经典算法大全.rar

    基础 IO 类和相关方法InputStream OutputStream Reader 类Writer 类 InputStream 及其子类 OutputStream 及其子类Reader 及其子类Writer 及其子类 注解 关于 null 的几种处理方式大小写敏感 null 是任何引用类型的...

    由浅入深详解Java 类的实例化顺序

    java教程 由浅入深详解Java 类的实例化顺序 在子类对象被实例化的过程中,变量、构造方法以及代码块三者的先后顺序为: 1. 父类的静态变量和静态代码块,按代码先后顺序执行 2. 子类的静态变量和静态代码块,按...

    java在实例中的变量.txt

    java在实例中的变量

    java .定义一个复数类 complex ,它的内部具有两个实例变量:realPart和imagPart,分别代表复数的实部和虚

    定义一个复数类 complex ,它的内部具有两个实例变量:realPart和imagPart,分别代表复数的实部和虚 部,编程实现要求的数学运算。 (1)实现两个复数相加。复数加运算的原则是:复数的实部和虚部分别相加。 (2...

    Java学习代码实例 JAVA基础.rar

    在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。 static用法 5、八大基本类型 byte1 short2 int4 long8 float4 double8 char1 bool1bit

    Java基础语法+流程控制

    Java基础课件Java基础语法一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。 对象:对象是类的一个实例,有状态和行为。例如,一...

    Java程序设计实例与操作光盘

    丁永卫、谢志伟、高振栋主编的《Java程序设计实例与操作》以12个项目全面展示了Java语言的风采,其内容包括Java语言特色和Java开发环境介绍,Java的数据类型、常量、变量、运算符和表达式、控制结构等编程基础知识,...

    JAVA类变量及类方法代码实例详解

    主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    14.java学习第十四章——super()关键字+实例变量(含引用数据类型做实例变量)和局部变量的个人总结+基本数据类型和引用数据类型的存放位置.pdf

    14.java学习第十四章——super()关键字+实例变量(含引用数据类型做实例变量)和局部变量的个人总结+基本数据类型和引用数据类型的存放位置.pdf

    java基础.txt

    属性:成员变量,实例变量 public String name; 方法:成员方法,实例方法 public void methodName(){ } } //对象 类名 对象名 = new 类名(); //创建对象需要调用类的构造方法 构造方法:类名() 特点:方法...

Global site tag (gtag.js) - Google Analytics