什么是静态方法?

C++中,若类的方法前加了static关键字,则该方法称为静态方法,反之为实例方法。静态方法为类所有,可以通过对象来使用,也可以通过类来使用。但一般提倡通过类名来使用,因为静态方法只要定义了类,不必建立类的实例就可使用。静态方法只能用类的静态成员

简介:实例方法必须通过类的实例来使用。实例方法可以使用类的非静态成员,也可以使用类的静态成员。类的静态方法,静态变量是在类装载的时候装载的。但是要特别注意,类的静态变量是该类的对象所共有的,即是所有对象共享变量。所以建议尽量少用静态变量。尽量在静态方法中使用内部变量。

方法:静态方法与静态变量一样,属于类本身,而不属于那个类的一个对象。要想调用一个被定义为static的方法,必须在它前面加上这个类的名称。实例方法必须通过类的实例来使用。实例方法可以使用类的非静态成员,也可以使用类的静态成员。类的静态方法,静态变量是在类装载的时候装载的。但是要特别注意,类的静态变量是该类的对象所共有的,即是所有对象共享变量。所以建议尽量少用静态变量。尽量在静态方法中使用内部变量。

声明:其中static关键字即表示静态的。声明静态方法的语法如下:<访问修饰符>static返回类型方法名(参数列表)。函数体内部不能定义static型的变量,要么就定义final型的,static型的变量要在函数外面定义。

调用:静态方法与实例方法唯一不同的,就是静态方法在返回类型前加static关键字。静态方法的调用有两种途径:

(1)通过类的实例对象去调用

调用格式为: 对象名.方法名

(2) 通过类名直接调用

调用格式为:类名.方法名

使用规则:我们在使用时要注意:静态方法只能访问类的静态成员,不能访问类的非静态成员;非静态方法可以访问类的静态成员,也可以访问类的非静态成员;静态方法既可以用实例来调用,也可以用类名来调用。静态方法实施规则。

代码示例:

using System;namespace TestStatic

  {

  class StaticTest

  {

  int x;

  static int y;

  public StaticTest(int a, int b)

  {

  x = a;

  y = b;

  }

  public void SimplePrint()

  {

  Console.WriteLine("x=" + x + ",y=" + y);

  }

  public static void StaticPrint()

  {

  Console.WriteLine("y={0}", y);

   // Console.WriteLine("x={0}",x); //静态方法中不能使用非静态成员

  }

  }

  class Test

  {

  static void Main(string[]args)

  {

  StaticTest st = new StaticTest(10, 23);

  st.SimplePrint();

  //st.StaticPrint(); //静态方法不能使用实例来调用

  StaticTest.StaticPrint();

  }

  }

  }
时间: 2024-11-20 02:56:06

什么是静态方法?的相关文章

【day25】类方法classmethod、静态方法staticmethod、普通方法

  普通方法:通过实例传参数进行调用的方法.s = 类(参数) 静态方法staticmethod:如果我们想写仅仅与类交互而不是与实例交互的方法,用类方法就可以达成,好处是不让类代码的关系到类定义的外面,也避免了今后代码维护的困难. class Foo: def __init__(self): pass @staticmethod def say_hi(self): print('hi,im staticmethod') Foo.say_hi() #不用实例化,就可以调用该方法 #输出hi,im

python 静态方法、实例方法、类方法

实例方法: class A: data = 0 def printd(self): print(self.data) type(A) #out:type A.__dict__ #out: a = A() #out:{} 类方法:@classmethod class A: data = 0 def printd(self): print(self.data) def getdata(): A.data = 1 print(A.data) class A: data = 0 def printd(s

PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结

  前  言  OOP  学习了好久的PHP,今天来总结一下PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化). 1  PHP中的抽象类与抽象方法 1.什么是抽象方法?              没有方法体 {} 的方法,必须使用abstract 关键字修饰.这样的方,我们叫做抽象方法.                    abstract function say(); //    抽象方法 2.什么是抽象类?        

Python-面向对象高级语法之静态方法、类方法

静态方法 一.什么是静态方法 普通的方法可以在实例化后直接调用,并且在方法里可以通过self.xxx调用实例变量或类变量,而静态方法是不可以访问实例变量或类变量,一个不能访问实例变量和类变量的方法,实际上已经和类本身没什么关系了.唯一与类有关联的就是有需要通过类名来调用这个方法. 二.如何使用静态方法 通过@staticmethod装饰器把需其装饰的方法即可变成一个静态方法. # _*_ coding:utf-8 _*_ class Dog(object): def __init__(self,

静态方法实例方法

js里面的实例方法和静态方法 转自:http://blog.csdn.net/oryjk/article/details/46901035 静态方法是可以直接用类名.方法名去调用的,而实例方法是不可以的,他必须要用实例才可以去调用, var Person=function(){}; Person.say=function(){ console.log('I am a Person,I can say.') }; Person.prototype.getName=function(name){ c

Java复习第三天-静态方法

静态方法是属于类的,内存必须为它分配内存空间,这个空间一直由静态方法占用,内存管理器不会由于静态方法没有被调用而将静态方法的存储空间收回,这样如果将所有的方法都声明为静态方法,就会占用大量的内存空间,最后是系统变慢.而普通的成员方法是由对象调用的,内存并不会一直为起分配内存,只有调用的时候才为其分配存储空间,而当其没有被调用时,存储空间就会被内存管理其收回,释放没有用的空间,提高的系统的运行速率! 好处:就像你说的不用实例化直接通过类名调用. 弊端:静态方法当加载的时候就已经申请了内存空间,不用

Swift静态方法

与静态属性类似,Swift中还定义了静态方法,也称为类型方法,所谓"类型"是指枚举.结构体和类.静态方法定义的方法也是与静态属性类似的,枚举和结构体的静态方法使用的关键字是static,类的静态方法使用的关键字是class.一.结构体中静态方法下面我们先看一个结构体静态方法的示例,代码如下: [html] view plaincopy struct Account { var owner : String = "Tony"                 //账户名

Python的静态方法和类成员方法

http://www.cnblogs.com/2gua/archive/2012/09/03/2668125.html Python的静态方法和类成员方法都可以被类或实例访问,两者概念不容易理清,但还是有区别的: 1)静态方法无需传入self参数,类成员方法需传入代表本类的cls参数: 2)从第1条,静态方法是无法访问实例变量的,而类成员方法也同样无法访问实例变量,但可以访问类变量: 3)静态方法有点像函数工具库的作用,而类成员方法则更接近类似Java面向对象概念中的静态方法. 实现静态方法和类

201671010145 2016-2017《Java程序设计》静态域与静态方法

1.静态域 如果将域定义为static,那么每个类中只有一个这样的域.而每一个对象对于所有的实例域却都有自己的一份拷贝.例如,假定需要给每一个雇员赋予唯一的表示码.这里给Employee类添加一个实例域id和一个静态域nextld: class Employee { private int id; private static int nextId=1: } 现在,每一个雇员对象都有一个自己的id域,但这个类的所有实例将共享一个nextid域,换句话说,如果有1000个Employee类的对象,

python静态方法类方法属性方法

Python的静态方法和类成员方法都可以被类或实例访问,两者概念不容易理清,但还是有区别的: 1)静态方法无需传入self参数,类成员方法需传入代表本类的cls参数: 2)从第1条,静态方法是无法访问实例变量的,而类成员方法也同样无法访问实例变量,但可以访问类变量: 3)静态方法有点像函数工具库的作用,而类成员方法则更接近类似Java面向对象概念中的静态方法. 静态方法 @staticmethod    def staticmd():        print '静态方法 @classmetho