静态方法和实例方法的区别

使用了static 修饰符的方法为静态方法,反之则是非静态方法。

  1.   静态成员属于类所有,非静态成员属于类的实例所有。
  2.   每创建一个类的实例,都会在内存中为非静态成员新分配一块存储;静态成员属于类所有,为各个类的实例所公用,无论类创建了多少实例,类的静态成员在内存中只占同一块区域。
  3.    C#静态方法属于类所有,类实例化前即可使用。
  4.   非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。
  5.   因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存。
  6. 它不属于类的某一个具体的实例,而是属于类本身。所以对静态方法不需要首先创建一个类的实例,而是采用类名.静态方法的格式 。 
  7.   static内部只能出现static变量和其他static方法!而且static方法中还不能使用this....等关键字,因为它是属于整个类。
  8.   静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。
  9.   静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。
时间: 2024-10-24 09:33:37

静态方法和实例方法的区别的相关文章

java 静态方法和实例方法的区别

静态方法和实例方法的区别主要体现在两个方面:   在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这种方式.也就是说,调用静态方法可以无需创建对象.   静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法:实例方法则无此限制.   下面几个例子展示了这一区别.   1.调用静态方法示例. //-----------hasStaticMethod.j

静态方法和实例方法的区别(转)

静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这种方式.也就是说,调用静态方法可以无需创建对象. 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法:实例方法则无此限制. 下面几个例子展示了这一区别. 1.调用静态方法示例. //-----------hasStaticMethod.java-----

编写高质量代码改善C#程序的157个建议——建议100:静态方法和实例方法没有区别

建议100:静态方法和实例方法没有区别 静态方法在加载时机和内存使用上和实例方法完全一致.在这里,我们先引出一个概念“类型对象”.比如类型Person,我们都知道new Person() 会产生一个对象,这个对象叫做“实例对象”,它在运行时会加载到GC Heap上.而“类型对象”是指代表Person类型本身的那个对象,这个对象在第一次使用类型时被加载到Loader Heap上.类型对象包括其自身的指针.自身的同步索引快.静态字段,以及一个方法表.在这个方法表中,无论是静态方法还是实例方法都会被存

java 静态方法和实例方法的区别(转)

静态方法和实例方法的区别主要体现在两个方面:   在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这种方式.也就是说,调用静态方法可以无需创建对象.   静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法:实例方法则无此限制.   下面几个例子展示了这一区别.   1.调用静态方法示例.   //-----------hasStaticMethod

Java | 基础归纳 | 静态方法与实例方法的区别

静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这种方式.也就是说,调用静态方法可以无需创建对象. 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法:实例方法则无此限制. 来源:https://www.cnblogs.com/shenliang123/archive/2011/10/27/222692

Python的类方法,静态方法,实例方法的区别

Python的方法并不想C#,Java这些编译性语言那样严格的区分静态方法和实例方法.也就是说Python的静态方法,类方法和实例方法只是在调用上有区别,类型和实例都可以调用.一般规则如下:A:实例方法:没有@classmethod和@staticmethod标记的方法是实例方法.假设这个有n个比传参数,类型调用的时候需要给n个参数传参.而实例调用时则只能传n-1个参数,因为第一个参数被系统默认传递了实例本身:因为有这个规定,所以实例方法如果没有参数,则实例是无法调用的,但类型可以调用.B:类方

C#静态方法和实例方法的区别

C#中静态与非静态方法比较 C#静态方法与非静态方法的区别不仅仅是概念上的,那么他们有什么具体的区别呢?让我们通过本文向你做一下解析. C#的类中可以包含两种方法:C#静态方法与非静态方法.那么他们的定义有什么不同呢?他们在使用上会有什么不同呢? 让我们来看看最直观的差别:使用了static 修饰符的方法为静态方法,反之则是非静态方法. 下面我们分四个方面来看看C#静态方法与非静态方法的差异: C#静态方法与非静态方法比较一. C#静态成员: ①静态成员属于类所有,非静态成员属于类的实例所有.

Python类方法、静态方法和实例方法的区别

1 #-*- encoding:utf-8 -*- 2 3 class Date(object): 4 def __init__(self, year, month, day): 5 self.year = year 6 self.month = month 7 self.day = day 8 9 #实例方法 10 def tomorrow(self): 11 self.day +=1 12 13 #静态方法(缺点:需要写入固定的类方法名Date) 14 @staticmethod 15 de

通俗讲解静态方法和实例方法的区别

静态成员是施加在类上的.而实例成员是施加在类的对象上的. 如 1.人有几只手.(看到这问题没.是对人来说.有没有问过你,你有几只手,只是会问.人有几只手.) 2.你手有多长.(这问题就是对你来说的.你手有多长.而不会问人的手多长). 第一个问题可以是对人这个类来说是可以知道的(当然人的对象你也可以知道).而第二个问题是对人类的一个对象你来说是可以知道的.而对于人类就不行了. 从上面也可以知道.实例成员可以访问静态成员.而静态成员不能访问实例成员.