static静态和非静态详解

static 作为Java中的一个关键字,用于修饰方法、成员变量(Field),统称为成员。

有static修饰的成员   属于类

1、方法称为静态方法(类方法),Field称为类的属性。

2、静态成员不能直接访问非静态成员。

3、成员属于类本身,而不是类的单个实例,既可以通过类来调用,也可以通过实例来调用(但建议不要用类的实例去调用)。

4、方法中不能使用this引用和super引用,只能用类名作为调用者。

没有static修饰的成员  属于实例

1、方法称为非静态方法(实例方法),Field称为实例的属性。

2、成员属于类的单个实例,只能通过实例来调用。

3、方法中可以使用this引用,一般情况下可以省略(当方法或构造器中局部变量和调用Field同名除外)。

4、super在子类方法中调用父类被覆盖的实例方法。

时间: 2024-10-22 06:16:31

static静态和非静态详解的相关文章

PHP中静态(static)调用非静态方法详解

1.PHP中可以静态调用非静态方法么? 今天我被问到PHP中可不可以使用 className::methodName() 的方法来调用一个没有声明static的方法.在我的印象中,我好像是见过这种用法,但又有些不确定.大家都知道,在手册或者教程里,方法被分为静态方法 和非静态方法,通常我们静态调用的方法,肯定是静态方法. 那如果我们调用了非静态方法会怎么样呢?首先做测试. <?php class test{ function test() { echo 'it works'; } } test:

&quot;静态方法里只能调用静态变量和静态方法&quot;详解

静态方法里可以调用静态方法和静态变量,同时也能调用非静态方法和非静态变量. public class Test { public Test() {}; public Test(int i) {this.n = i;} public static int m = 5; public int n = 10; public void fun1() {System.out.println("非静态方法fun1");} public static void fun2() {System.out.

C# 关于静态与非静态的那点小事

所谓静态与非静态,无非就是在声明的时候多用了一个"static". 那么静态与非静态有什么区别呢? 1.对于非静态的成员,包括方法,字段,属性.调用的时候需要用实例化的对象来调用.(new出来的.) 而对于静态成员,调用的时候则需要使用类名去调用. 这就引申出一个问题,可不可以用静态类来实例化对象呢?答案当然是否定的,因为,实例化对象的目的,就是要用实例化的对象来调用属性,方法或字段.对于静态的类来说,      是用类名来调用的,所以对于静态类来说,完全不需要实例化一个对象.也就无法

变量、方法以及静态和非静态

变量变量的种类:    1.成员变量    2.局部变量成员变量与局部变量的区别:    定义位置的区别        1.成员变量定义在方法之外,类之内.        2.局部变量定义在方法之内.    作用的区别:        1.成员变量用于描述事物的公共属性.        2.局部变量提供一个一个变量给方法内部使用.    生命周期的区别:        1.成员变量随着对象的创建而存在,对着对象的消失而消失.        2.局部变量在调用了对应的方法时执行到了创建该变量的语句

静态与非静态的使用与区别

静态变量.静态方法.静态代码块.非静态变量及非静态方法的简单介绍 转载自:http://xixinfei.iteye.com/blog/1256085 静态变量 静态变量是类中的一种特殊变量,他在运行是可以说是从属于类,也就是说由该类定义生成的所有对象共用同一个静态变量,内存中只有一个版本.这对于要求在程序运行过程中,只有一个对象副本存于内存非常重要,如在实现单例模式时,为了实现只有一个类对象存于内存中,我们把内对象定义为一个静态变量:为了确保这个执行过程中,只有一个Connection对象村与

03.静态和非静态的区别

静态和非静态的区别 方法,字段,属性都可以被static修饰. (1).在非静态类中,即可有实例(非静态)成员,可以有静态成员. 静态成员和非静态成员在调用上有什么不一样呢? (1.1)非静态成员(实例成员)必须被实例化对象之后,的对象名来调用. 对象名.实例成员名; (1.2)静态成员必须被定义它的类的类名来调用. 类名.静态成员名;      //注意,如果要在定义静态方法的类的内部使用静态 方法,我们可以省略类名.直接写. (1.3).静态方法可以访问静态成员,但是静态方法不可以访问非静态

关于静态与非静态之具体总结

花费了些功夫,差点儿相同搞明确了: 大家会看到有些地方不停反复出现--那就是你要找的东西 本文參考多处,详细出处就不写了. 静态和非静态: 字段.函数成员的声明中含static修饰符时是静态成员,否则是非静态成员(实例成员): 数据成员能够分静态变量.非静态变量两种. 静态成员属于类,而非静态成员(实例成员)属于对象. 对于类的数据成员来说.假设是静态的,那么他将是类的一部分,为全部实例共享,假设是非静态的.则每一个实例有一份考贝. 类的非静态成员属于类的实例全部,每创建一个类的实例都在内存中为

.NET 基础 一步步 一幕幕[面向对象之静态、非静态]

静态.非静态 先来看一段代码来区分静态与非静态: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 静态和非静态的区别 { /** * 非静态类 * 既可以定义静态字段.静态属性.静态方法. * 也可以定义非静态(实例成员)字段.非静态(实例成员)属性.非静态(实例成员)静态方法. **/ //非

静态与非静态的异同

转载至-http://bbs.51cto.com/thread-1025127-1.html 静态类 vs 普通类静态类与普通类的区别有以下几点:1)静态类无法实例化而普通类可以:2)静态类只能从System.Object基类继承:普通可以继承其它任何非static和非sealed类,但也只能继承一个类:3)静态类不能继承接口:普通类可以继承多个接口:4)静态类只能包含静态成员:普通类可以包含静态和非静态成员:5)静态类不能作为字段,方法参数和局部变量使用:普通类可以;静态类的意义:可以用静态类

关于静态与非静态之详细总结

花费了些功夫,差不多搞明白了: 大家会看到有些地方不停重复出现--那就是你要找的东西 本文参考多处,具体出处就不写了. 静态和非静态: 字段.函数成员的声明中含static修饰符时是静态成员,否则是非静态成员(实例成员): 数据成员可以分静态变量.非静态变量两种. 静态成员属于类,而非静态成员(实例成员)属于对象.对于类的数据成员来说,如果是静态的,那么他将是类的一部分,为所有实例共享,如果是非静态的,则每个实例有一份考贝. 类的非静态成员属于类的实例所有,每创建一个类的实例都在内存中为非静态成