静态方法

静态方法也叫类方法,静态方法是属于所有对象实例的,其形式如下:

访问修饰符  static 方法名 (){}

静态的成员是属于类的,普通的成员是属于对象的。

注意:类方法中不能访问非静态属性(变量)

在类外部:类名::类方法名 或者 对象名->类方法名

在类内部:self ::类方法名 或者 类名::类方法名

例题:学生入学叫学费,求学生交的总学费

<?php

    class student{
    public static $fee=0;//总学费
   public $name;
    function __construct($name){
    $this->name=$name;
}
//入学
    pubulic static function enterSchool($ifee){
    self::$fee+=$ifee;
}

    //获取总学费
    public static getFee(){
    return self::$fee;
}
} 

//创建学生
$stu1=new Student("小倩");
//通过类名来调用静态方法
$sti1->enterSchool(300);
$sti2=new Student("李四");
$stu2->enterSchool(300);
echo Student::getFee();

?>

在我们编程中,我们往往使用静态方法去操作静态变量。
静态方法的特点

1.静态方法去操作静态变量。

2.静态方法不能操作非静态变量

注意:普通的成员方法,既可以操作非静态变量,也可以操作静态变量。

静态变量与普通变量区别

①加上static 称为类变量或者静态变量,否则称为实例变量

②类变量是与类相关的,公共的属性

③实例变量属于每个对象个体的属性

④类变量可以通过类名:: 类变量名 或self:: 类变量名 直接访问。

时间: 2024-10-18 18:08:36

静态方法的相关文章

【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